RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'

       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'
    

RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第1张图片

  • 再初始化权重和偏置
    RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第2张图片
    看到它们是float32的类型。
  • 跑模型的时候就出现该错误
    RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第3张图片
    RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第4张图片
    • 解决办法
      1 将double改为float
      RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第5张图片
      2 将float改为double
      RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #4 'mat1'_第6张图片

ps:类型转化介绍pytorch中文手册在https://pytorch-cn.readthedocs.io/zh/latest/package_references/Tensor/

你可能感兴趣的:(pytorch)