본문 바로가기

Pytorch/Tips9

Pytorch dataset에서 특정 class만을 load하는 Dataloader 만드는법 torchvision 라이브러리는 웬만한 dataset을 모두 지원해주기 때문에 매우 편한 라이브러리다. 그러나 연구를 하다보면 가끔 dataset class 중 특정 class만이 필요할 때가 있다. 이때 다음과 같은 방법으로 손쉽게 특정 class를 추출할 수 있다. 먼저 원하는 데이터셋을 torchvision 코드로 설정한다. (STL 10을 예시로 들겠다.) training_data = torchvision.datasets.STL10( root=".", split='train', download=True, transform=transform ) 위는 일반적인 dataset을 불러오는 방법이다. 이렇게 만든 dataset은 모든 class가 포함되어 있다. 이제 Subset 모듈을 사용하면 된다. .. 2023. 5. 12.
우분투 16.04 cmake 설치 방법 가끔 컴퓨터를 쓰다보면 cmake를 업데이트 해야할 때가 생긴다. 하지만 cmake는 일반적인 업데이트가 안되기 때문에 기존 cmake를 지우고 새로 설치해야 한다. 1. cmake 삭제 먼저 cmake를 다음 명령어로 삭제한다. sudo apt purge cmake 그 다음 cmake가 잘 지워졌는지 다음과 같은 명령어로 확인한다. cmake --version 1-1. cmake가 삭제되지 않는 경우 이때 여전히 cmake 버전이 다음과 같이 출력되는 경우가 있다. 이때 나의 경우는 usr/local/bin에 cmake가 설치되어 있었기 때문에 sudo apt purge cmake 명령어로 지워지지 않았다. 따라서 usr/local/bin에서 cmake를 수동으로 삭제해야 한다. cd .. 를 통해 /.. 2023. 5. 3.
한 모델의 loss계산에 2개 이상의 dataloader를 병렬로 사용할 경우 신경망을 학습시킬 때는 기본적으로 dataloader를 통해 데이터를 불러운 후, out = net(input) loss = criterion(out, label) 로 loss를 계산한다. 이때 dataloader가 2개로 한 모델을 학습시켜야할 때가 있다. (예를들면 같은 데이터셋에 transforms을 다르게 적용할 경우) 그럼 위의 코드를 다음과 같이 작성하게 된다. out1 = net(input1) loss1 = criterion(out1, label1) out2 = net(input2) loss2 = criterion(out2, label2) 이러면 loss가 2개가 만들어지는데 이를 동시에 학습시키려고 다음과 같이 단순 + 를 통해 loss를 더하는 방법을 생각하게 된다. loss = loss.. 2023. 2. 21.