pytorch maxpool和卷积尺寸问题

如果输入是奇数时,输出尺寸不一致。

如果是偶数,则会一致,但是不是4的倍数,下采样时,又可能会出现不一致的情况。

padding为1时,偶数与maxpool对的上,奇数对不上

padding为0时,奇数与maxpool对的上,偶数对不上

解决:

nn.MaxPool2d(kernel_size=2,stride=2,ceil_mode=True) 与padding为1对的上

为false还是无法对的上

maxpoolpadding为1时,则偶数结果也是 /2+1

out = nn.MaxPool2d(kernel_size=2,stride=2,padding=1)

https://blog.csdn.net/jacke121/article/details/104020945

pytorch maxpool和卷积尺寸问题_第1张图片

import torch
from torch import nn

class conv_bn_relu(nn.Module):
    def __init__(self, nin, nout, kernel_size, stride, padding, bias=False):
        super(conv_bn_relu, self).__init__()
        self.conv = nn.Conv2d(nin, nout, kernel_size=kernel_size, stride=stride, padding=padding, bias=bias)
        self.batch_norm = nn.BatchNorm2d(nout)
        self.relu = nn.ReLU6(True)

x = torch.rand(1,3,7,7)
out = nn.MaxPool2d(kernel_size=2,stride=2)
print(out.forward(x).shape)

conv_3x3_left = nn.Conv2d(3, 3, kernel_size=3, stride=2, padding=1, bias=False)


print(conv_3x3_left(x).shape)

 

你可能感兴趣的:(torch)