학습한 내용
import torch
import torch.nn as nn
import torch.nn.functional as F
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv2d(in_channels=1, out_channels=3, kernel_size=5, stride=1)
self.conv2 = nn.Conv2d(in_channels=3, out_channels=10, kernel_size=5, stride=1)
self.fc1 = nn.Linear(10 * 12 * 12, 50)
self.fc2 = nn.Linear(50, 10)
def forward(self, x):
print("연산 전", x.size())
x = F.relu(self.conv1(x))
print("conv1 연산 후", x.size())
x = F.relu(self.conv2(x))
print("conv2 연산 후", x.size())
x = x.view(-1, 10 * 12 * 12)
print("차원 감소 후", x.size())
x = F.relu(self.fc1(x))
print("fc1 연산 후", x.size())
x = self.fc2(x)
print("fc2 연산 후", x.size())
return x
cnn = CNN()
output = cnn(torch.randn(10, 1, 20, 20)) # Input Size: (10, 1, 20, 20)
실행결과
Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
학습한 내용 중 어려웠던 점 또는 해결못한 것들
해결방법 작성
학습 소감
이렇게 이미지를 행렬로 만들어서 분류할수있다는게 신기하다