Pytorch,Matrix multiplication of tensors always reports an error, where a tensor contains the variable,why and how to fix it?

Viewed 23

code:

import torch
import numpy as np
x_data=[1.0,2.0,3.0]
y_data=[2.0,4.0,6.0]

w=torch.Tensor([1.0,2.0])
b=torch.Tensor([0.0])
w.requires_grad=True

def forward(x):
    val = torch.Tensor([x**2,x])
    return   (val @ w.T) +b  #error

def loss(x,y):
    y_pred=forward(x)
    return (y_pred-y)**2

print("predict (before training)",4,forward(4).item)

for epoch in range(100):
    for x,y in zip(x_data,y_data):
        l=loss(x,y)
        l.backward()
        print('\tgrad:',x,y,w.grad.item())
        w.data=w.data-0.01*w.grad.data

        w.grad.data.zero_()

    print("progress:",epoch,l.item())

print("predict(after training)",4,forward(4.0).item)



error:

ValueError: only one element tensors can be converted to Python scalars

Pytorch, Matrix multiplication of tensors always reports an error, where a tensor contains the variable,why and how to fix it? I am very sorry my English is not very good

0 Answers
Related