(报错)RuntimeError: expected scalar type Float but found Long

报错代码

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

你可能感兴趣的:(python)