딥러닝

    [딥러닝] 리눅스 ubuntu 22.04 LTS - CLI 설치 방법

    설치 시, 다음 블로그를 많이 참고했습니다. (https://shanepark.tistory.com/289) Ubuntu 22.04 LTS 선택 이유 딥러닝 서버를 구축하면서, 리눅스 서버로 ubuntu를 선택하는데에는 그리 어려운 선택은 아니었습니다. centOS 8은 지원이 중단되고, 제가 선택한 부품들을 호환하는 데에는 ubuntu가 최적이었기 때문입니다. 안정성을 생각하면 20.04를 선택할 수도 있었지만, 2023년 1월에 출시한 RTX 4070ti를 지원하는 nvidia driver를 support하는 ubuntu 버전이 22.04 인 것을 감안했을 때, 22.04 LTS를 선택했습니다. Rufus와 usb를 이용한 ubuntu iso 준비 (자세한 설명은 추후 보강) 1. 최소 4GB 이상..

    [pytorch] torch.tensor.detach() 의 기능

    파이토치에서 Tensor 객체의 detach() 메소드는 현재 Tensor 객체와 동일한 데이터를 가지지만 연산 그래프(Computational Graph)에서 분리된 새로운 Tensor 객체를 생성합니다. 이 메소드는 일반적으로 Tensor 객체를 다른 Tensor 객체로 변환하고자 할 때 사용됩니다. 예를 들어, 주어진 Tensor 객체에 대한 연산의 결과로 생성된 새로운 Tensor 객체가 있을 때, 이 새로운 Tensor 객체를 사용하여 추가적인 계산을 수행하고자 할 때, 기존 Tensor 객체의 연산 그래프와의 의존성을 제거하여 메모리 사용량을 줄이고 계산 속도를 향상시키는 데 유용합니다. detach() 메소드는 requires_grad 속성을 False로 설정하여 기존 Tensor 객체와 다..

    [PyTorch] 파이토치를 활용한 선형회귀 구현

    (본 포스팅은 PyTorch로 시작하는 딥 러닝 입문 교재를 참고하여 작성하였습니다.) 선형회귀를 구현하기에 앞서 아래 지식이 선행되면 이해하기 더 쉽습니다 :) 가설 (Hypothesis) 손실 함수 (= 목적 함수 = 비용 함수) ; loss function = objective function = cost function 경사 하강법 (Gradient Descent) 공부시간과 시험 성적에 대한 데이터가 아래 테이블처럼 나와있다고 가정해보겠습니다. Study Hours (x) Result (y) 1 20 2 40 3 60 4 ? 1시간 공부 --> 20점 2시간 공부 --> 40점 3시간 공부 --> 60점 4시간 공부 --> ??점 선형회귀를 이용하여 시험 성적을 예측한다면, 아래의 패턴을 학습하..

    [Multi-modal] 논문 리뷰 FashionVLP

    이번에 소개할 논문은 Fashion VLP라는 논문입니다. FashionVLP는 '시각-언어 상호작용 (Vision-Language Interaction)'을 이용하여 패션 관련 작업을 수행하는 비전 언어 모델입니다. 이 논문에서는 패션 이미지에 대한 캡션 생성, 이미지 검색 및 다른 언어 모델과의 비교 실험 등에 대해 다루고 있습니다. 또한, FashionVLP는 BERT 기반의 언어 모델과 ViT 기반의 비전 모델을 결합하여 학습되며, 다양한 패션 관련 작업에서 우수한 성능을 보여줍니다. 이러한 결과는 FashionVLP가 다양한 패션 관련 응용 분야에서 유용하게 사용될 수 있다는 가능성을 제시합니다. Fashion VLP - 논문 제목: FashionVLP: Vision Language Transf..

    [tensorflow] 함수형 API 활용한 CNN 예시

    Functional API 특징 텐서플로우에서 제공하는 가장 직관적인 Sequential 모델은 쉽고 빠르게 레이어를 쌓아 딥러닝 모델을 만들 수 있습니다. 여기서 Sequential 모델은 네트워크 입력과 출력이 하나라가 가정합니다. 그리고 많은 경우에서 이 가정이 적절합니다. 하지만 이런 가정이 맞지 않는 경우가 발생할 수 있습니다. 예를 들면 개별 입력을 여러 개 필요로 하는 네트워크이거나 여러 개를 출력하는 네트워크의 경우에는 단순히 선형적으로 층을 쌓는 sequential 모델로는 구현할 수 없습니다. 이런 경우 함수형 API를 고려합니다. 함수형 API는 다양한 경우에서 활용할 수 있습니다. 아래의 그림처럼 소셜 미디어 포스팅을 통해 나이를 예측하고, 수입을 예측하고, 성별을 예측하는 하나의 ..

    [Tensorflow] AutoEncoder 오토인코더 구현하기

    본 포스팅은 Applied Deep Learning - Autoencoders 편을 참고하였습니다. 오토인코드는 입력과 출력이 동일한 피드포워드 신경망의 한 유형입니다. 입력을 의도적으로 낮은 차원의 '코드'로 압축, 이후에 이 압축된 '코드'라는 표현을 기반으로 출력을 재구성(reconstruct)합니다. 코드는 입력의 간결한 "요약" 또는 "압축"이며 '잠재 공간 포현 (latent space representation)'이라고도 합니다. 오토인코더의 구성요소 오토 인코더는 [ 인코더, 코드, 디코더 ] 총 3개의 요소로 구성되어 있습니다. 인코더는 입력을 압축하고, 압축된 입력은 코드가 됩니다. 디코더는 이 코드를 사용하여 입력을 재구성합니다. 아래는 오토인코더의 동작 예시입니다. MNIST의 데이..

    [딥러닝] 합성곱 신경망 - 직관적으로 convolutional layer 깊이에 대해 이해하기

    본 포스팅에서는 수식적으로 합성곱 연산을 설명하기 보다는 그림에 의존한 직관적인 내용을 이야기 해보겠음 합성곱 연산 완전 연결층(Dense Layer)과 합성곱 층(Convolutional Layer) 사이의 근본적인 차이는 어떻게 될까? Dense층은 입력 특성 공간에 있는 전역 패턴을 학습하지만, 합성곱 층은 지역 패턴을 학습합니다. 만약 이미지라면 작은 2D 윈도우로 입력에서 패턴을 찾습니다. 컨브넷은 두 가지 흥미로운 성질을 제공하는데요. 첫째, 학습된 패턴은 평행 이동 불변성(translation invariant)를 갖습니다. 컨브넷이 이미지의 오른쪽 아래 모서리에서 어떤 패턴을 학습했다면, 다른 곳(예를 들어 왼쪽 위 모서리)에서도 이 패턴을 인식할 수 있습니다. 해당 패턴을 학습했기 때문에..

    [Tensorflow] Multi GPU 사용하기 (gpu 병렬처리)

    데이터의 용량이 큰 경우, 가용할 수 있는 GPU가 여러 개인 경우, 더 효율적으로 모델을 학습할 수 있는 방법이 있습니다. 단일 GPU가 아닌 여러 개의 GPU를 활용하여 분산전략을 수행한다면, 더 빠르게 모델을 학습시킬 수 있습니다. (물론 너무 적은 데이터의 경우 데이터를 분할하는 시간이 더 오래걸리기 때문에, 그러한 경우에는 단일 GPU를 사용하면 됩니다) GPU병렬 처리에는 다양한 방법이 존재하는데요. 간단한 소개와 함께 대표적인 방법 코드를 통해 확인해보겠습니다. 방법1. MirroredStrategy TensorFlow에서 여러 gpu를 활용한 학습에 추천하는 방법입니다. 사전에 설정된 & 사용 가능한 모든 GPU자원을 동시에 활용을 하는 방법을 채택하는데요. 이때 입력 데이터는 병렬적으로 ..