示例代码:
import torch
# 输入图像(5X5)
from torch import nn
from torch.nn import MaxPool2d
# RuntimeError: "max_pool2d" not implemented for 'Long' 报这个错是数据类型的错误,所以我们要个input加个数据类型的限制
input = torch.tensor([[1,2,0,3,1],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]])
# 由[官方文档](https://pytorch.org/docs/stable/generated/torch.nn.MaxPool2d.html#torch.nn.MaxPool2d)给出的API使用详情可以知道 要求 的输入是四维的
# (batch_size,channels,H,W)=(-1,1,5,5)第一个给的是-1 给-1就是让他自己计算batch_size
input = torch.reshape(input,(-1,1,5,5))
print(input.shape)
# 搭建神经网络
class Booze(nn.Module):
# 继承nn.Module的初始化
def __init__(self):
super(Booze, self).__init__()
self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)
# 重写forward函数
def forward(self,x):
output = self.maxpool1(x)
return output
obj = Booze()
output = obj(input)
print(output)
运行该段代码时报错:RuntimeError: "max_pool2d" not implemented for 'Long'
。
报这个错是数据类型的错误,所以我们要对这个input加个数据类型的限制.
出问题的代码是
input = torch.tensor([[1,2,0,3,1],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]])
这一段代码。给它加上数据类型限制dtype=torch.float32
。即改成
input = torch.tensor([[1,2,0,3,1],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]],dtype=torch.float32)