defforward(self, x): x = self.fc1(x) x = self.ac(x) x = self.fc2(x) x = self.ac(x) return x
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from torch.utils.data import Dataset, DataLoader classData(Dataset): def__init__(self, x, y): super(Data, self).__init__() self.x = x self.y = y def__len__(self): returnlen(self.x) def__getitem__(self, index): xi = self.x[index] yi = self.y[index] xi = torch.unsqueeze(xi, 0) yi = torch.unsqueeze(yi, 0) return xi, yi
loss = nn.MSELoss() optim = torch.optim.SGD(net.parameters(), lr=0.01)
1 2 3 4 5 6 7 8 9 10
for epoch inrange(200): for X, y in train_data: y_pred = net(X) optim.zero_grad() l = loss(y, y_pred) l.mean().backward() optim.step() if epoch % 10 == 0: print("Epoch:{}, mean_loss:{}".format(epoch, l.mean())) print("Finished")