现在有以下数据:
x1 | -2 | -1 | 0 | 1 | 2 | 3 | 4 |
x2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
x3 | -5 | -4 | -3 | -2 | -1 | 0 | 1 |
y | -6 | 0 | 6 | 12 | 18 | 24 | 30 |
数学分析可得到方程:y = 2 * x1 + 3 * x2 + x3,但是计算机不必计算权重值的求得方法。
import torch x1s = torch.Tensor([[-2.0], [-1.0], [0.0], [1.0], [2.0], [3.0], [4.0]]) x2s = torch.Tensor([[1.0], [2.0], [3.0], [4.0], [5.0], [6.0], [7.0]]) x3s = torch.Tensor([[-5.0], [-4.0], [-3.0], [-2.0], [-1.0], [0.0], [1.0]]) x123s = torch.cat((x1s, x2s, x3s), dim=1) ys = torch.Tensor([[-6.0], [0.0], [6.0], [12.0], [18.0], [24.0], [30.0]]) model = torch.nn.Sequential( torch.nn.Linear(3, 1) ) loss_fn = torch.nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.01) epochs = 400 for epoch in range(epochs): optimizer.zero_grad() ys_pred = model(x123s) loss = loss_fn(ys_pred, ys) loss.backward() optimizer.step() x1 = 16.0 x2 = 19.0 x3 = 12.0 x = torch.Tensor([[x1, x2, x3]]) y = model(x).item() print(y)