pytorch

머신러닝 모델을 학습시키는 과정엔 다양한 하이퍼파라미터가 있다.그 중에서도 배치 사이즈(batch size)는 중요한 역할을 한다.이번 포스팅에서는 배치 사이즈가 무엇이고 배치 사이즈를 작게 하거나 크게 했을 때의 효과를 예시 코드를 통해 알아보자.그리고 배치 사이즈를 어떻게 선택해야하는지도 알아보자.Batch size (배치 사이즈)배치 사이즈는 머신러닝에서 모델을 훈련시킬 때 사용되는 데이터의 묶음 크기를 나타내는 개념이다.훈련 데이터셋을 작은 묶음으로 나누어 모델에 순차적으로 제공하는 방식을 사용하는데, 이때 각 묶음의 크기가 바로 배치 사이즈이다. 배치 사이즈는 주로 확률적 경사 하강법(SGD) 및 미니 배치 경사 하강법과 같은 최적화 알고리즘에서 사용된다.이 방법은 전체 데이터셋을 한 번에 처리..
PyTorch에는 작업을 위한 특정 GPU를 지정하는 여러 가지 방법이 있다.이번 포스팅에서는 GPU를 지정하는 여러가지 방법과 각 방법의 특징을 살펴보자.torch.cuda.set_device()이 방법은 PyTorch 연산에 대한 현재 기본 CUDA 디바이스를 명시적으로 설정하는데 사용된다.torch.cuda.set_device()에 디바이스 인덱스나 디바이스 객체를 인수로 전달하여 원하는 GPU를 지정할 수 있다.import torchtorch.cuda.set_device(0) # 디바이스 인덱스 0을 기본 GPU로 설정PyTorch에 특화: 이 방법은 PyTorch에 특화된 방법으로 PyTorch 라이브러리 내에서 기본 CUDA 디바이스를 설정할 수 있다.원하는 GPU 디바이스 인덱스나 객체를 ..
PyTorch에는 CPU에서 GPU에 텐서를 전달할 때 .to('cuda')와 .cuda() 두 가지 방법이 있다.물론 GPU에 바로 텐서를 만들 수도 있다.바로 만드는 방법과 차이점은 이 글에서 확인하자.이제 .to('cuda')와 .cuda() 두 가지 방법의 차이를 알아보자..to('cuda')이 방법은 지정된 디바이스(일반적으로 GPU)로 텐서를 이동시키기 위한 보다 일반적인 방법이다..to('cuda')를 호출하여 텐서를 현재 기본 CUDA 디바이스로 전송할 수 있다.여러 개의 GPU가 있는 경우, PyTorch가 지정한 기본 디바이스(기본적으로는 GPU 0)를 사용한다.근데 .to('cuda:1')과 같이 디바이스 인덱스를 전달하여 다른 디바이스(GPU)을 사용하도록 직접 지정할 수도 있다....
PyTorch에서 GPU로 작업할 때 GPU 디바이스에 데이터를 넘겨주는 여러 가지 방법이 있다.# Approach 1torch.rand(10, 10).cuda()# Approach 2torch.rand(10, 10, device=torch.device('cuda')) 두 가지 방법의 차이와 속도를 비교해 보자.# Approach 1torch.rand(10, 10).cuda()이 방법에서 torch.rand 함수는 CPU에서 임의의 텐서를 생성한다.그런 다음 .cuda() 메서드가 텐서에서 호출되어 텐서를 CPU에서 GPU로 이동한다.이 연산은 inplace로 수행되어 원래 텐서를 수정하고 GPU에 동일한 텐서를 반환하는 형태로 작동한다. # Approach 2torch.rand(10, 10, devic..
이번 포스팅의 주제는 오랜만에 머신러닝과 직접적으로 관련된 이야기이다.코드의 실행 속도를 높이는 것과 관련된 것으로 하이퍼파라미터의 최적화를 통한 빠른 학습과 관련되어 있다.이 글은 하이퍼 파라미터 중 num_workers에 대한 내용을 살펴보자.num_workers을 설정할 때 4의 배수로 설정하라는 소리는 어디선가 들어봤을 것이다.num_workers가 무엇이고 어떻게 설정하면 좋은지 알아보자.num_workers 이란DataLoader(dataset, num_workers=8)PyTorch의 DataLoader 클래스는 대규모 데이터셋을 효율적으로 로딩하고 전처리하기 위한 강력한 도구이다.대용량 데이터셋을 다룰 때 데이터 로딩은 훈련 과정에서 중요한 병목 현상이 될 수 있다.이때 num_worker..
TensorBoard 텐서보드 소개TensorBoard(텐서보드)는 오픈 소스 머신러닝 프레임워크인 TensorFlow에서 제공하는 시각화 도구이다.텐서보드는 머신러닝 모델의 다양한 부분을 시각적으로 모니터링하고 분석할 수 있다.텐서보드를 사용하면 모델 아키텍쳐를 보거다 메트릭을 추적 및 시각화하고 트레이닝 커브를 모니터링하는 등 모니터링하고 싶은 웬만한 것들을 전부 시각화할 수 있다.또한 사용법도 어렵지 않고 직관적인 웹 기반 인터페이스를 제공하며 PyTorch를 비롯한 여러 프레임워크와 호환되기 때문에 많은 딥러닝 커뮤니티에서 텐서보드를 애용한다.이번 포스팅에서는 텐서보드 사용법을 PyTorch 예제를 통해 알아보자.TensorBoard 설치텐서보드를 파이토치와 함께 사용하려면 텐서보드가 포함된 텐서..
Optuna 소개Optuna는 머신러닝용 하이퍼파라미터 최적화 프레임워크이다.하이퍼파라미터 최적화의 중요성은 아래 링크를 통해 확인하자.[Machine Learning] Hyperparameter Tuning on PyTorch (하이퍼파라미터 튜닝) 개념과 방법[Machine Learning] Hyperparameter Tuning on PyTorch (하이퍼파라미터 튜닝) 개념과 방법Hyperparameter 머신 러닝에서 Hyperparameter는 모델이나 알고리즘을 제어하는 변수이다. 이러한 변수는 모델의 학습 과정을 제어하며, 모델의 성능에 큰 영향을 미친다. 예를 들어, neural network에서 하dykm.tistory.com Optuna는 주어진 모델 아키텍처 및 데이터 세트에 대해 ..
Custom Dataset의 필요성MNIST 또는 CIFAR-10과 같이 PyTorch의 기본 제공 데이터 세트에서 직접 로드할 수 있는 형식이 아닌 데이터 세트가 있는 경우 CustomDataset이 필요하다.즉, 사용자 지정 형식의 데이터셋이 있을 때, 데이터를 제대로 처리하려면 Dataset의 하위 클래스인 CustomDataset을 만들어야 한다.예를 들어, 이미지 데이터 세트가 있는 경우 데이터 세트에서 이미지와 해당 레이블을 로드할 CustomDataset을 만들어야한다는 이야기다. 이 글에서는 Dataset와 DataLoader 클래스를 알아보고 어떻게 Custom Dataset을 사용할 수 있는지 알아보자.Dataset와 CustomDataset의 다른 점 이해하기PyTorch Datase..
GAN(Generative Adversarial Networks)은 실제 데이터와 매우 유사한 가짜 데이터를 생성하는 데 사용되는 딥러닝 알고리즘이다.GAN은 두 개의 네트워크 즉, Generator(생성기)와 Discriminator(판별기)으로 구성된다.Generator는 가짜 데이터를 생성하고 Discriminator는 데이터가 진짜인지 가짜인지 구분한다.제네레이터는 디스크리미네이터를 속일 수 있는 데이터를 생성하도록 훈련되고 디스크리미네이터는 실제 데이터와 가짜 데이터를 구별하도록 트레이닝된다. GAN은 사실적인 이미지나 비디오 등 학습한 데이터와 유사한 데이터를 생성하는 데 효과적이다.하지만 이런 GAN도 부족한 점이 있다.GAN의 한계는 생성된 데이터의 속성을 제어하는 능력이 부족하다는 것이다..
지난 글에서 아무 기술이 들어가지 않은 Vanilla GAN을 살펴보았다.GAN에 대한 설명은 다 지난 글에서 다뤄봤으니 바로 본론으로 넘어가자. 오늘은 간단한 기술을 하나 추가한 GAN을 살펴보자.참고로 추가할 기술은 이미지 처리에 적합한 convolution이다.DCGAN (Deep Convolutional GAN)본 블로그에서 CNN에 대해 다뤘던 적이 있다.CNN은 이미지의 구조적인 정보를 해치지 않기 때문에 이미지 처리에 적합한 네트워크라고 설명했었다. 이번에는 CNN을 GAN에 적용해서 이미지 판별 및 이미지 생성에 적합한 GAN을 제작해보자.즉 Discriminator와 Generator을 다중 퍼셉트론이 아닌 CNN을 사용한다는 이야기이다. 이미 우리는 CNN와 GAN을 모두 알고 있으니 ..
아니그니까
'pytorch' 태그의 글 목록