nn.ReLU 와 F.relu는 ReLU를 객체로 선언해서 사용하느냐, 아니면 함수로 사용하느냐의 차이입니다. ReLU는 학습이 필요없기 때문에 개별적인 객체로 선언할 필요없이 함수를 사용해 적용할 수 있습니다. 이러한 내용은 이곳에서도 자세히 설명하고 있으니 참고하시기 바랍니다.
class SimpleCNN(nn.Module):
def __init__(self):
super().__init__()
# self.conv 구현
self.conv = nn.Sequential(
## 코드 시작 ##
nn.Conv2d(3,32,kernel_size = 3) # conv_1 해당하는 층
nn.BatchNorm2d(32), # batch_norm_1 해당하는 층
nn.ReLU(), # ReLU_1 해당하는 층
nn.Maxpool2d(), # maxpool_1 해당하는 층
nn.Conv2d(32, 64), # conv_2 해당하는 층
nn.BatchNorm2d(64), # batch_norm_2 해당하는 층
nn.ReLU(), # ReLU_2 해당하는 층
nn.Maxpool2d(), # maxpool_2 해당하는 층
nn.Conv2d(64, 128), # conv_2 해당하는 층
nn.BatchNorm2d(128), # batch_norm_2 해당하는 층
nn.ReLU(), # ReLU_2 해당하는 층
nn.Maxpool2d(), # maxpool_2 해당하는 층
nn.Conv2d(128, 128), # conv_2 해당하는 층
nn.BatchNorm2d(128), # batch_norm_2 해당하는 층
nn.ReLU(), # ReLU_2 해당하는 층
nn.Maxpool2d() # maxpool_2 해당하는 층
# conv_3 해당하는 층
# batch_norm_3 해당하는 층
# ReLU_3 해당하는 층
# maxpool_3 해당하는 층
# conv_4 해당하는 층
# batch_norm_4 해당하는 층
# ReLU_4 해당하는 층
# maxpool_4 해당하는 층
## 코드 종료 ##
)
# self.fc 구현
## 코드 시작 ##
self.fc1 = nn.Linear( 128*5*5,512 )
self.fc2 = nn.Linear( 512, 2 )
## 코드 종료 ##
def forward(self, x):
x = self.conv(x)
x = x.view(x.shape[0], -1)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
'AI > PyTorch' 카테고리의 다른 글
[PyTorch] torch.nn 과 torch.nn.functional (0) | 2021.06.10 |
---|---|
[PyTorch] nn.MaxPool2d(), nn.BatchNorm2d() (0) | 2021.06.10 |
[PyTorch] Intro, 외울 부분 (0) | 2021.06.02 |
[PyTorch] Dataset and DataLoader 사용법 (0) | 2021.06.01 |
[PyTorch] Multivariable Linear Regression (0) | 2021.06.01 |