[Pytorch] tensor to PIL Image
·
언어 | Framework/Pytorch
tensor to numpy output_tensor = model(data) output_tensor = output_tensor.cpu() # tensor to numpy output_tensor = torch.squeeze(output_tensor[0]) output_numpy = output_tensor.numpy() ## if output_tensor.requires_grad==True # output_numpy = output_tensor.detach().numpy() numpy to PIL Image from torchvision import transforms # numpy to PIL Image output_image = transforms.ToPILImage()(output_numpy)
1x1 Convolution Layer
·
DeepLearning/Concept
1x1 conv layer의 장점 Channel(Filter) 수 조절 연산량 감소 비선형성 Channel 수 조절, 연산량 감소 1x1 conv layer를 사용하면 output size는 변함이 없지만 channel(filter)의 수를 조절할 수 있다. 이 channel 수를 적절히 조절하면 파라미터를 효과적으로 줄일 수 있다. 파라미터 수 = kernel size * kernel size * input channel * output channel 파라미터가 감소됨에 따라 같은 결과라도 1x1 conv layer를 사용하는 편이 연산량 감소에도 득이 됨을 알 수 있다. 비선형성 1x1 conv layer를 사용함에 따라 그만큼 ReLU Activation을 더 사용할 수 있게되는데, 이 때문에 모델..
[Classification] VGGNet
·
DeepLearning/Classification
VGGNet VGGNet 연구팀은 망의 깊이가 깊을 수록 model의 성능에 어떤 영향을 끼치는지 연구. 5x5 Conv를 한번 하는것 보다, 3x3 Conv를 두번 하는것이 망의 깊이가 깊어지고, parameter 수도 적어짐. VGGNet은 모든 Convolution filter size를 3x3으로 고정해서 사용. Pytorch Code import torch import torch.nn as nn def CBR2d(in_channels, out_channels, _kernal_size, _stride, _padding): return nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=_kernal_size, stride=_stride..
[Classification] AlexNet
·
DeepLearning/Classification
AlexNet 기본 구조 AlexNet은 5개의 Convolution layer와 3개의 fully connected layer로 구성 되어있다. 입력 영상의 크기로 227x227x3을 사용. (3은 RGB) 성능 개선을 위해 ReLU, DropOut layer를 활용. Pytorch Code import torch import torch.nn as nn def CBR2d(in_channels, out_channels, _kernal_size, _stride, _padding): return nn.Sequential( nn.Conv2d(in_channels, out_channels, kernel_size=_kernal_size, stride=_stride, padding=_padding), nn.Batc..
Dropout
·
DeepLearning/Concept
Dropout 학습 중 Overfitting을 막기 위한 방법 중 하나이다. Hidden layer의 일부 유닛의 동작을 랜덤 하게 생략하여 학습 효율을 높이는 것. Overfitting 학습 데이터에 너무 특화되어 모델이 학습하지 않은 데이터에 대해 일반화되지 못한 경우를 overfitting이라고 한다. 학습 중 아래 그림과 같이 train loss는 점차 줄어들고 있지만 학습 데이터 외의 loss값, 즉 val loss가 큰 폭으로 흔들리거나 증가한다면 이는 학습 데이터에는 적합해지지만 그 외 데이터에는 오히려 잘못된 예측을 한다는 얘기가 된다. 이런 상황을 overfitting 되었다고 할 수 있다. 이러한 overrfitting을 막기위한 방법으로 다음과 같은 방법들이 있다. 데이터의 양을 늘리..
[Python] Call By Object Reference
·
언어 | Framework/Python
Call By Object Reference Call By Value : 함수에 인자를 넘길 때 값만 넘김 Call By Reference : 메모리 주소를 넘김, 함수 내에 인자 값 변경 시 호출자의 값도 변경 Call By Object Reference Python은 객체의 주소가 함수로 전달되는 방식 전달된 객체를 참조하여 변경 시 호출자에게 영향을 줌 (여기까지는 Call By Reference와 같음) but, 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음 코드 예시 def func(b): b += 10 print(b) a = 10 func(a) print(a) 위 코드를 예시로 Call by Value, Reference, Object Reference를 설명해보자. 위 코드가 Call..
woongs_93