class MultiLayerPerceptronClass(nn.Module):
"""
Multilayer Perceptron (MLP) Class
"""
def __init__(self,name='mlp',xdim=784, hdim=256, ydim=10): # xdim = 28 * 28 픽셀의 바운딩박스, hdim = 256(Hyper Param), ydim = 0~9의 기대값 추출
super(MultiLayerPerceptronClass,self).__init__()
self.name = name
self.xdim = xdim
self.hdim = hdim
self.ydim = ydim
self.lin_1 = nn.Linear( # h = W2x
# FILL IN HERE
self.xdim, self.hdim
)
self.lin_2 = nn.Linear( # y = w2h
# FILL IN HERE
self.hdim, self.ydim
)
self.init_param() # initialize parameters
def init_param(self):
nn.init.kaiming_normal_(self.lin_1.weight) #He initialization 함수들
nn.init.zeros_(self.lin_1.bias)
nn.init.kaiming_normal_(self.lin_2.weight)
nn.init.zeros_(self.lin_2.bias)
def forward(self,x):
net = x
net = self.lin_1(net)
net = F.relu(net) # activation function
net = self.lin_2(net)
return net
M = MultiLayerPerceptronClass(name='mlp',xdim=784, hdim=256, ydim=10).to(device)
loss = nn.CrossEntropyLoss()
optm = optim.Adam(M.parameters(),lr=1e-3)
#print(M.parameters())
print ("Done.")