본문 바로가기

Pytorch11

Pytorch Learnable parameter, 학습가능한 파라미터 만들기 우리가 pytorch 내에서 학습 가능한 파라미터를 만들어야 할 때가 종종 있다. 1 이때 nn.Module 내에 파라미터를 선언할 경우 parameter = nn.Parameter(torch.randn(10).cuda()) 위와 같이 선언하여 사용하면 된다. 2 nn.Module 외에서 위 파라미터를 선언한 후 아래와 같이 연산을 한다면 parameter = parameter.exp() parameter = parameter.double() 아래와 같은 ValueError: can't optimize a non-leaf Tensor 에러를 만나게 된다. 이는 이미 만들어진 파라미터를 다른연산으로 casting하였기 때문이라고 하는데 pytorch를 자세히 공부하지 않아서 이해는 안된다. 하지만 해결 방.. 2024. 3. 14.
우분투 Ubuntu Nvidia 드라이버, CUDA, cuDNN 설치 초보자때 CUDA 버전 업을 하려니까 Nvidia 드라이버 날아가고.. cuDNN 에러나고 난리났었는데설치 방법을 제대로 알려주는 블로그가 없었어서한번에 확실하게 설치하기 위해 정리했습니다.cnDNN 버전 9부터 사이트가 변경된것 같은데, cnDNN 8버전을 설치하는법을 기록해두었습니다.(cnDNN 8으로도 웬만하면 이상없이 사용가능할것입니다.) nvidia driver 삭제 및 설치부터 CUDA, cuDNN 삭제 및 설치까지 모두 정리했습니다.(본인도 nvidia 드라이버나 cuda 다시 설치할 때 이거 보고 설치합니다) 1. nvidia driver 삭제sudo apt-get purge nvidia*sudo apt-get autoremovesudo apt-get autoclean 어떤 블로그는 CUD.. 2023. 6. 8.
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.