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
Pytorch 卷积函数nn.Conv2d()运行报错:RuntimeError: expected scalar type Long but found Float_第1张图片
而输入的 tensor类型明明是 LongTensor。
在这里插入图片描述

解决方法

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

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

代码成功跑通。

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

你可能感兴趣的:(程序debug,pytorch,python,经验分享)