pytorch中卷积层Conv2d函数

pytorch中卷积层Conv2d函数:

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

二维卷积层, 输入的尺度是(N, C_in,H,W),输出尺度(N,C_out,H_out,W_out)的计算方式:
在这里插入图片描述

  1. 参数kernel_size,stride, padding,dilation也可以是一个int的数据,此时卷积height和width值相同;也可以是一个tuple数组,tuple的第一维度表示height的数值,tuple的第二维度表示width的数值
  2. groups: 控制输入和输出之间的连接:
  • group=1,输出是所有的输入的卷积;
  • group=2,此时相当于有并排的两个卷积层,每个卷积层计算输入通道的一半,并且产生的输出是输出通道的一半,随后将这两个输出连接起来。
  • group=in_channels,每个输入通道都与自己的一组过滤器卷积,其大小为,在这里插入图片描述
  1. 参数:
    in_channels(int) – 输入信号的通道
    out_channels(int) – 输出的通道
    kerner_size(int or tuple) - 卷积核的尺寸
    stride(int or tuple, optional) - 卷积步长
    padding(int or tuple, optional) - 输入的每一条边补充0的层数
    dilation(int or tuple, optional) – 卷积核元素之间的间距
    groups(int, optional) – 从输入通道到输出通道的阻塞连接数
    bias(bool, optional) - 如果bias=True,添加偏置
    padding_mode (string, optional) – zeros
x = torch.randn(8,8)
x = x.reshape((1,1) + x.shape)
x.shape
type((1,1)+x.shape)
a = (1,2) + (2,3)
def comp_conv2d(conv2d, x):
    x = x.reshape((1,1)+x.shape)
    y = conv2d(x)
    return y.reshape(y.shape[2:])

conv2d = torch.nn.Conv2d(1,1,3,padding=1)
x = torch.randn(8,8)
comp_conv2d(conv2d, x).shape

torch.Size([8, 8])

你可能感兴趣的:(pytorch)