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'
    

在这里插入图片描述

  • 再初始化权重和偏置
    在这里插入图片描述
    看到它们是float32的类型。
  • 跑模型的时候就出现该错误
    在这里插入图片描述
    在这里插入图片描述
    • 解决办法
      1 将double改为float
      在这里插入图片描述
      2 将float改为double
      在这里插入图片描述

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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值