일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tent paper
- GAN
- shrinkmatch paper
- simclrv2
- CGAN
- conjugate pseudo label paper
- Pix2Pix
- cifar100-c
- ConMatch
- mme paper
- mocov3
- 백준 알고리즘
- semi supervised learnin 가정
- Pseudo Label
- remixmatch paper
- UnderstandingDeepLearning
- CycleGAN
- Entropy Minimization
- dann paper
- CoMatch
- SSL
- WGAN
- dcgan
- Meta Pseudo Labels
- adamatch paper
- shrinkmatch
- 최린컴퓨터구조
- 컴퓨터구조
- BYOL
- 딥러닝손실함수
- Today
- Total
목록딥러닝/파이토치 (33)
Hello Computer Vision
모델공부를 하는 도중 생소하지는 않았지만 완전히 이해하기는 힘들어서 정리해보려고 합니다. 뒤쪽에 많은 분들이 헷갈릴만한 부분들에 대해서 최대한 정리해보았습니다. 출처 : 영상자료,블로그자료 우리가 사용하는 일반 convolution을 본다면 다음 이미지와 같다. 이미지의 $D_{F}$는 input값의 h,w를 뜻하고 $D_{k}$는 kernel의 크기를 뜻한다. 만약 (3,64,64)크기의 input이 있고 이를 16깊이의 채널 깊이를 만들고 싶다면 (3, $D_{k}, D_{k}$) 의 커널 16개의 계산을 수행하면 되는 것이다.(그림 참조) 그렇다면 연산량은 어떻게 될까? 연산에 사용되는 커널크기, input값의 채널크기, output값의 이미지크기, 원하는 깊이의 채널크기가 될 것이며 여기서 사용된..
이번에 CycleGAN관련하여 팀원들과 모델을 만들었는데 데이터셋은 각각 다르고 같은 코드를 사용했었다. 내 데이터셋은 이미지의 높이, 너비가 같았고 한 팀원의 데이터셋은 celebA였고 이 데이터셋의 크기는 178 x 218이다. 그리고 코드 내 전처리하는 과정에서 transforms.Resize(256) 코드가 있었고 내 데이터셋에는 적용되었지만 팀원의 데이터셋에는 오류가 났다.(전처리 목적 : (256 x 256)크기로 만들기) 이유를 찾기 위해 일단 document를 찾아보았다. Resize document 만약 input값으로 받은 이미지의 높이, 너비가 같다면은 int값 하나를 그냥 주어도 해당 값으로 잘 변환이 되지만 만약 높이와 너비가 다르면 다르게 공식이 적용되는 것이었다. 이 경우를 c..
일단 공식문서를 살펴보는게 가장 정확하니 한번 살펴보았다. 파이토치 공식문서 핵심이 되는 어구를 한번 찾아보자면 The output is of size H x W, for any input size. The number of output features is equal to the number of input planes. 이라고 할 수 있다. 예시로 살펴보는게 제일 빠르니 한번 보겠다. input = torch.rand(1, 3, 3) maxp = nn.AdaptiveAvgPool2d((2,2)) output = maxp(input) output tensor([[[0.1934, 0.2858], [0.5547, 0.6766]]]) 3x3크기의 input을 넣어주었고 AdaptiveAvgPool에는 (2,..
활성화 함수로 가장 많이 쓰이는 ReLU 함수에서 종종 nn.ReLU(inplace = True)를 볼 수 있다. 파이토치 공식문서에는 정확히 이렇게 적혀있다. inplace (bool) – can optionally do the operation in-place. Default: False 이에 대해 해석해보자면 inplace값을 True로 준다면 인풋 값에 대한 결과값을 따로 저장하는 것이 아니라 그 자리에 있던 데이터 값을 대신하는 것이라고 할 수 있다. 조금 복잡해보일 수 있지만 정리하자면 들어온 input값이 없어지고 output값만 남는다고 할 수 있다. 따라서 기존에 input값을 저장했던 메모리를 따로 할당할 필요가 없으니 약간의 메모리적인 이득을 얻을 수 있다고 하는데 이 부분은 현업에 ..
이번에 SqueezeNet에 대한 모델 코드들을 보는데 풀링을 하는 과정에서 ceil mode = True 이렇게 되어있어 알고 넘어가보려고 한다. 일단 공식 문서에 따르면 정확히 이렇게 나와있다. ceil_mode (bool) – when True, will use ceil instead of floor to compute the output shape 이거에 따라 결과로 나오는 output의 모양이 파라미터 값에 따라 달라지는구나? 라고 생각할 수 있다. ceil --> 이 뜻은 올림을 뜻한다. 따라서 True값을 준다면 올림을 하는 것이고 기본값은 False로 되어있다. 예시를 통해 한번 알아보려고 한다. input = torch.rand(1, 6, 6) tensor([[[0.0656, 0.0923..
기존에 제가 쓴 코드들을 다시 보는데 nn.ModuleList를 이용해 짠 코드들이 있더라고요. 뭔가 nn.Sequential처럼 묶어주는건 기억이 나는데 정확히 기억이 나지 않아 다시 한번 공부해보려고 합니다. nn.ModuleList란 list 형태로 layer들을 묶어줄 수 있습니다. list형태로 묶여있기 때문에 layer들의 iterator를 생성하는 것이라 할 수 있다. 하지만 nn.Sequential과는 달리 forward method가 없기 때문에 바로 사용할 수가 없다. 이게 무슨 말이냐하면 이러한 에러가 발생한다. modulelist = nn.ModuleList( [nn.Linear(10, 10), nn.Linear(10, 10)] ) input =torch.rand((10)) modu..
이번에 kaggle 대회 참여를 위해 CycleGAN공부를 하던 도중 완성된 모델에 대해 한눈에 알아보려고 summary기능을 사용해보려고 했는데 (기존에는 keras를 사용해서 model.summary() 사용) 파이토치에서는 동일하게 적용되지 않더라고요 그래서 찾아본 결과 3가지 방법이 있었는데요. 1. 모델 입력하기 mod = Discriminator(3) mod Discriminator( (initial): Sequential( (0): Conv2d(3, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), padding_mode=reflect) (1): LeakyReLU(negative_slope=0.2) ) (model): Sequential( (0..
지금까지 딥러닝 모델들을 공부하면서 CNN을 어떻게 쌓냐에 집중했지 BatchNorm 쓸 때는 습관적으로 쓰고는 했는데, 어떨 때는 BatchNorm1d를 쓰고 , BatchNorm2d를 쓰는 것을 발견했네요 (다른 사람의 코드를 쓰는 것도 생각을 많이 하고 써야겠다는 생각을 합니다..) 그래서 pytorch document 에서 찾아본 결과 BatchNorm1d : 2d or 3d input에 한하여 사용 BatchNorm2d : 4d input에 한하여 사용 이렇게 쓰인다고 합니다. 제가 공부하는 GAN모델에 한정하여 생각한다면 처음 노이즈(batchsize, 100)를 넣고 생성자부분에서 MLP를 진행할 때 정규화를 사용하고 싶다면 BatchNorm1d를 사용하고 판별자 네트워크를 짤 때는 이미지형..