报错代码
import torch
def synthetic_data(w,b,num_examples):
X = torch.normal(0,1,(num_examples,len(w)))
y = torch.matmul(X,w) + b
y += torch.normal(0,0.01,y.shape)
return X,y.reshape((-1,1))
true_w = torch.tensor([2,-3,4])
true_b = 4.2
features,labels = synthetic_data(true_w,true_b,1000)
print('features:',features[0],'\nlabels:',labels[0
错误信息
E:\tool\anaconda\envs\pytorch_38\python.exe "E:\deep_learning\chapter_1\4_Linear regression.py"
Traceback (most recent call last):
File "E:\deep_learning\chapter_1\4_Linear regression.py", line 17, in
features,labels = synthetic_data(true_w,true_b,1000)
File "E:\deep_learning\chapter_1\4_Linear regression.py", line 11, in synthetic_data
y = torch.matmul(X,w) + b
RuntimeError: expected scalar type Float but found Long
Process finished with exit code 1
此错误是因为features,labels = synthetic_data(true_w,true_b,1000)中true_w在传递参数时是torch.long型数据,而y = torch.matmul(X,w)中需要torch.float型,因此在定义true_w时显性定义为float型
true_w = torch.tensor([2,-3,4],dtype=torch.float32)
然后代码正常运行
E:\tool\anaconda\envs\pytorch_38\python.exe "E:\deep_learning\chapter_1\4_Linear regression.py"
features: tensor([-0.1643, -1.1914, 0.7178])
labels: tensor([10.3341])
Process finished with exit code 0