RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be ..

这是我第二次遇到这个问题啦,昨天遇到一遍,今天又遇到了,又花了好半天才想起来为啥(气),所以滚来做笔记了。

RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same or input should be a MKLDNN tensor and weight is a dense tensor

首先这段话的意思是:

运行时异常:输入类型为 torch.FloatTensor ,而网络模型的权重类型为 torch.cuda.FloatTensor ,这二者需要保持一致,除非输入为MKLDNN tensor类型并且权重是 dense tensor。

后半句我暂时还不懂是啥意思哈哈,但前半句是说我们的网络模型加载到cuda中了,但是输入是在cpu中的,所以出问题了。

as we know,使用GPU加速训练需要调整网络模型、损失函数还有输入数据这三处,因此我们检查如下三处:

1. 网络模型 

# 实例化模型
my_lenet5 = MyLeNet5()
my_lenet5.to(device)

没问题 √

2. 损失函数

# 损失函数
loss_fn = nn.CrossEntropyLoss()
loss_fn.to(device)

 没问题 √

3. 输入数据

    # 训练步骤
    my_lenet5.train()
    for data in train_dataloader:
        imgs, labels = data
        imgs.to(device)
        labels.to(device)

有问题!

“网络模型、损失函数都不需要另外赋值,直接 .to(device) 就可以

但是数据(图片、标注)需要另外转移之后再重新赋值给变量 ”

所以要改成:

    # 训练步骤
    my_lenet5.train()
    for data in train_dataloader:
        imgs, labels = data
        imgs = imgs.to(device)
        labels = labels.to(device)

 这样我的问题就解决啦!


红字标识的出处:

【我是土堆 - PyTorch教程】学习随手记(已更新 | 已完结 | 10w字超详细版)_如何原谅奋力过但无声的博客-CSDN博客

 大佬这篇笔记做的超详细,推荐大家看。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于输入类型(torch.FloatTensor)和权重类型(torch.cuda.HalfTensor)不匹配导致的。根据你提供的引用内容,我们可以看到这个错误与之前的错误形式类似,只是类型不同。 根据引用和引用,我们可以推断出,当输入类型是torch.FloatTensor时,权重类型应该是torch.FloatTensor;当输入类型是torch.cuda.FloatTensor时,权重类型应该是torch.cuda.FloatTensor。因此,当输入类型是torch.FloatTensor时,权重类型为torch.cuda.HalfTensor是不匹配的,导致了错误的发生。 总之,为了解决这个错误,你需要确保输入类型和权重类型是相同的。你可以将输入和权重类型都改为torch.FloatTensor或者都改为torch.cuda.HalfTensor来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【PyTorch】常见错误: RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda....](https://blog.csdn.net/qq_40520596/article/details/106980556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [五、RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor)](https://blog.csdn.net/panchang199266/article/details/128153179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值