填充
不填充:
假设输入图像高度为n1,宽度为n2,卷积核高宽为k1、k2,则输出形状为(n1-k1+1)×(n2-k2+1),经过卷积后的图像越来越小,边缘信息不断丢失
填充:
假设添加p1行填充(一半在顶部,一半在底部),添加p2列填充(一半在左侧一半在右侧),输出形状为(n1-k1+p1+1)×(n2-k2+p2+1)
当设置p1=k1-1,p2=k2-1的时候,输入形状和输出形状一致。
如下例,给定宽高为8的输入,则输出的宽高也为8
import torch
from torch import nn
# 为了方便起见,我们定义了一个计算卷积层的函数。
# 此函数初始化卷积层权重,并对输入和输出提高和缩减相应的维数
def comp_conv2d(conv2d, X):
# 这里的(1,1)表示批量大小和通道数都是1
X = X.reshape((1, 1) + X.shape)# size变化 [8,8]-->[1,1,8,8]