Chapter 5 / Convolutional Neural Net
CNN
CNN์ ์ปจ๋ณผ๋ฃจ์ ์ฐ์ฐ์ ์ด๋ฏธ์ง์ ์ ์ฉํด ์์ ์ฒ๋ฆฌ์ ์ต์ ํํ ๋ด๋ด ๋คํธ์ํฌ์ด๋ค. ์ด๋ฏธ์ง์ ํฝ์ ํ๋ํ๋๊ฐ ์๋ ๊ฐ ๋ถ๋ถ๋ณ๋ก ํํฐ๋ฅผ ์ ์ฉํด ๋ด๋ด ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๋ค. ํํฐ๋ฅผ ์ด๋ฏธ์ง์ ๋ชจ๋ ๋ถ๋ถ์ ๊ณฑํ๊ณ ๋ํด ๊ฐ์ ์ถ๋ ฅํ๋ค.
CNN์ ๋ณดํต ์ปจ๋ณผ๋ฃจ์ ๊ณ์ธต๊ณผ ํ๋ง ๊ณ์ธต์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ์ปจ๋ณผ๋ฃจ์ ๊ณ์ธต์ ์ปจ๋ณผ๋ฃจ์ ์ฐ์ฐ์ ์ ์ฉํ๊ณ , ํ๋ง ๊ณ์ธต์ ์ปจ๋ณผ๋ฃจ์ ํ ์ด๋ฏธ์ง์์ ์ค์ ํน์ฑ๋ง ๊ณจ๋ผ ์ด๋ฏธ์ง์ ์ฐจ์์ ์ถ์์ํจ๋ค. ์ปจ๋ณผ๋ฃจ์ ๊ณ์ธต์ ๋ค์ํ ์ต์ ์ด ์์ผ๋ฉฐ ์ด๊ฒ์ ๋ฐ๋ผ ์ถ๋ ฅ ์ฑ๋๊ณผ ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
CNN with FashionMNIST
Model
Layer
Info
Conv2D
1->10, kernel_size=5
MaxPool2D+ReLU
kernel_size=2
Conv2D+Dropout2D
10->20, kernel_size=5 , p=0.5
MaxPool2D+ReLU
kernel_size=2
Linear+ReLU
320->50
Dropout
p=0.5
Linear
50->10
torch.nn.Module์์ ์๋ธํด๋์ฑํ CNN ๋ชจ๋ธ ์ฝ๋
class CNN(nn.Module):
def __init__(self):
super(CNN, self ).__init__()
self.conv1 = nn.Conv2d(1,10,kernel_size=5)
self.conv2 = nn.Conv2d(10,20,kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.drop = nn.Dropout()
self.fc1 = nn.Linear(320,50)
self.fc2 = nn.Linear(50,10)
def forward(self,x):
x = F.relu(F.max_pool2d(self.conv1(x),2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)),2))
x = x.view(-1,320)
x = F.relu(self.fc1(x))
x = self.drop(x)
x = self.fc2(x)
return xHyperparameters & etc.
ํญ๋ชฉ
๊ฐ
Epochs
40
Batch Size
64
Loss Function
Catecorical Cross Entropy
Optimizer
SGD
Learning Rate
0.01
Momentum
0.5
loss function์ Cross Entropy๋ฅผ ์ฌ์ฉํ๋ค. Optimizer๋ SGD์ momentum์ ์ ์ฉํด ์ฌ์ฉํ๋ค. learning rate๋ 0.01, momentum์ 0.5์ด๋ค.
์ค์: ํด๋น ์ฑํฐ์ ๊ฒฐ๊ณผ๋ MNIST๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค๋ช
์ FashionMNIST๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋์์๋ค. ํ์์ ์ฐฉ์ค๋ก ์ธํด ์๋ชป ์ด ๊ฒ ๊ฐ๋ค. FashionMNIST๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ
์ ์์ ์ฝ๋๋ก๋ 99%๊ฐ ๋์ค์ง ์๋๋ค.
Last updated
Was this helpful?