Message=Expected object of scalar type Long but got scalar type Float for argument #3 ‘mat2‘ in c

在深度学习框架pytorch入门与实践的代码中 

因为版本问题在   y_pred =x.mm(w)+b.expand_as(y)这句话出现报错

 Message=Expected object of scalar type Long but got scalar type Float for argument #3 'mat2' in call to _th_addmm_out   Source=K:\exp\PythonApplication1\PythonApplication1\PythonApplication1.py   StackTrace:   File "K:\exp\PythonApplication1\PythonApplication1\PythonApplication1.py", line 37, in     y=x.mm(w)+b.expand_as(x)

刚开始按字面分析结合网上的博客,将所有的传入用.long()把float改成long程序虽然能够运行但结果不对,w变成了0维向量

采用visual stduio的断点分析发现

y_pred =x.mm(w)+b.expand_as(y)中

而x是int tensor,而y由这句话传入

x=t.arange(0,20).view(-1,1)

因此可得将20改为20.0可自动变成浮点型

变为 x=t.arange(0,20.0).view(-1,1)

成功运行

结论:pytorch的版本问题带来的坑,另报错语句不一定是真的要你float改long

而是多想想为什么会这样报错

你可能感兴趣的:(pytorch,python,pytorch,深度学习,人工智能,机器学习)