实验目的
简单进行一个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
而输入的 tensor类型明明是 LongTensor。
解决方法
经过查阅,参考博客
链接: link.
分类的标签应该是long,图像是float32
那我输入的一个张量应该算是“图片”,所以应该将longtensor改为floattensor。
a = torch.arange(16).reshape(1,1,4,4).float()
代码成功跑通。
这个问题虽然解决,但是没有深究,有指导的大佬或看过这篇解决方案帮到你的亲亲,对Conv2d函数内的函数类型有所深究的话,希望可以在评论区科普一下。