1 在学习《动手学深度学习》(Dive-into-DL-PyTorch)的时候。出现了改错误。
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1’这个错误,后面发现这个错误老是出现在网络代码中。这个错误说应为标量类型Float的对象,但为参数’mat1’获取标量类型Double。表示Double和Float类型的数据进了运算。
2 下面举一个列子看如何会产生这样子的问题,并如何去解决这个问题。以后运到这个错误就能够自己去解决了。
-
在学习《动手学深度学习》自己生成一个数据集时,它是一个float64的。表明它是一个DoubleTensor
先明白dtype的对应关系:FloatTensor -> 'float32' DoubleTensor -> 'float64' ShortTensor -> 'int16' IntTensor -> 'int32' LongTensor -> 'int64'
- 再初始化权重和偏置
看到它们是float32的类型。 - 跑模型的时候就出现该错误
- 解决办法
1 将double改为float
2 将float改为double
- 解决办法
ps:类型转化介绍pytorch中文手册在https://pytorch-cn.readthedocs.io/zh/latest/package_references/Tensor/