RuntimeError: “max_pool2d“ not implemented for ‘Long‘

示例代码:

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'
RuntimeError: “max_pool2d“ not implemented for ‘Long‘_第1张图片
报这个错是数据类型的错误,所以我们要对这个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)

再次运行结果便没有报错。
RuntimeError: “max_pool2d“ not implemented for ‘Long‘_第2张图片

你可能感兴趣的:(pytorch,深度学习,python,机器学习)