剛學習pytorch,簡單記錄一下
""" test Funcition """ import torch from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): ''' a neural network with pytorch''' def __init__(self): # 父類的構造方法 super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 6, 5) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16*5*5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2)) x = F.max_pool2d(F.relu(self.conv2(x)), 2) x = x.view(-1, self.num_flat_features(x)) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x def num_flat_features(self, x): size = x.size()[1:] num_features = 1 for s in size: num_features *= s return num_features net = Net() # 查看網絡 print(net) # 查看模型需要學習的參數 params = list(net.parameters()) print(len(params)) for param in params: print(param.size()) # 輸入數據 input = Variable(torch.randn(1,1,32,32)) print(input) out = net(input) print(out) # 損失函數 target = Variable(torch.arange(1, 11, dtype=torch.float32)) print(target) criterion = nn.MSELoss() loss = criterion(out, target) print(loss)
輸出結果: