퍼셉트론부터 AlexNet 까지
최
최윤진
아키텍쳐 | |
1세대 | 퍼셉트론 |
2세대 | MLP |
3세대 | AlexNet(ReLU, DropOut) |

키(input x) | 몸무게(정답) |
100 | 30 |
150 | 50 |
170 | 70 |
180 | 78 |
키(input x) | 몸무게(정답) | y_prediction |
100 | 30 | 100*w + b |
150 | 50 | 150*w + b |
170 | 70 | 170*w + b |
180 | 78 | 180*w + b |
class **AlexNet**(nn.Module):
def __init__(self):
super(AlexNet, self).__init__()
# Image input_size=(3, 227, 227)
self.layers = nn.Sequential(
# input_size=(96, 55, 55)
nn.Conv2d(in_channels=3, out_channels=96, kernel_size=(11, 11), stride=4, padding=0),
nn.ReLU(),
# input_size=(96, 27, 27)
nn.MaxPool2d(kernel_size=3, stride=2),
# input_size=(256, 27, 27)
nn.Conv2d(in_channels=96, out_channels=256, kernel_size=(5, 5), stride=1, padding=2),
nn.ReLU(),
# input_size=(256, 13, 13)
nn.MaxPool2d(kernel_size=3, stride=2),
# input_size=(384, 13, 13)
nn.Conv2d(in_channels=256, out_channels=384, kernel_size=(3, 3), stride=1, padding=1),
nn.ReLU(),
# input_size=(384, 13, 13)
nn.Conv2d(in_channels=384, out_channels=384, kernel_size=(3, 3), stride=1, padding=1),
nn.ReLU(),
# input_size=(256, 13, 13)
nn.Conv2d(in_channels=384, out_channels=256, kernel_size=(3, 3), stride=1, padding=1),
nn.ReLU(),
# input_size=(256, 6, 6)
nn.MaxPool2d(kernel_size=3, stride=2),
)
**self.classifier = nn.Sequential(
nn.Dropout(p=0.5),
nn.Linear(in_features=256*6*6, out_features=4096),
nn.ReLU(),
nn.Dropout(p=0.5),
nn.Linear(in_features=4096, out_features=4096),
nn.ReLU(),
nn.Linear(in_features=4096, out_features=1000),
)**
def forward(self, x):
x = self.layers(x)
x = x.view(-1, 256*6*6)
x = self.classifier(x)
return x