Pytorch 卷积函数nn.Conv2d()运行报错:RuntimeError: expected scalar type Long but found Float

实验目的

简单进行一个4*4 tensor经过卷积生成[4 , 2, 2]的tensor

import torch
from torch import nn

class Net():
    def __init__(self):
       self.conv1 = nn.Conv2d(1, 4, kernel_size = 3, stride=1)
    def forword(self, x):
        print(x.type())
        x = self.conv1(x)
        return x



a = torch.arange(16).reshape(1,1,4,4)
print(a.shape)
net = Net()
print(net.forword(a))

遇到的问题

RuntimeError: expected scalar type Long but found Float
显示输入类型不对,应该是Long而输入的是Float
而输入的 tensor类型明明是 LongTensor。
在这里插入图片描述

解决方法

经过查阅,参考博客
链接: link.
分类的标签应该是long,图像是float32
那我输入的一个张量应该算是“图片”,所以应该将longtensor改为floattensor。

a = torch.arange(16).reshape(1,1,4,4).float()

代码成功跑通。

这个问题虽然解决,但是没有深究,有指导的大佬或看过这篇解决方案帮到你的亲亲,对Conv2d函数内的函数类型有所深究的话,希望可以在评论区科普一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值