现在有以下数据:

x1-2-101234
x21234567
x3-5-4-3-2-101
y-60612182430

数学分析可得到方程: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)