如何计算【防忘笔记】中卷积层的输入输出尺寸?

2026-04-28 11:502阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计579个文字,预计阅读时间需要3分钟。

如何计算【防忘笔记】中卷积层的输入输出尺寸?

卷积神经网络输出大小计算方法:TensorFlow中常用卷积操作及API正方向卷积:Conv2D()示例:Conv2D(128, kernel_size=4, padding=same)

卷积输出大小计算方法 tensorflow中的常用卷积操作API

正向卷积:Conv2D()

举例:

... Conv2D(128, kernel_size=4, padding="same") # 128个过滤器(128维),卷积核大小为4,边缘填充 # 注:此处步长为默认值1,此时使用padding="same",输出数据的形状会保持不变(与输入一致) # 若步长不为1,则根据计算公式计算(后面会介绍)

升采样:UpSampling2D()

举例:

... model.add(Reshape((7, 7, 128)))# Reshape成以下形状 model.add(UpSampling2D())# 上采样,对数据进行插值,形状变成之前的两倍 --->(None, 14, 14, 128) ... pytorch中的常用卷积操作API

正向卷积:nn.Conv2d()

举例:

nn.Conv2d(256, 512, 4, stride=1, bias=False), ... # 输入256通道,输出512通道,卷积核为4,步长为1 # 注:这里的"通道"指卷积操作之后得到的"特征图"的数量,而不是数据的形状 # 数据形状计算按照公式

转置卷积:nn.ConvTranspose2d()

举例:

nn.ConvTranspose2d(256, 128, 4, stride=2, bias=False) ... # 输入256通道,输出128通道,卷积核为4,步长为2,逻辑与Conv2d()类似 卷积操作输入输出数据形状的计算方法

假设输入是一个正方形,宽度与高度相等

那么计算卷积输出大小的公式是:

L形括号的意义是取括号内数值的数学下限

如何计算【防忘笔记】中卷积层的输入输出尺寸?

例如:2.3 --> 2

例子:

# 输入形状是28,28,1 # 16个过滤器(16维),卷积核大小为3,步数2,边缘填充 model.add(Conv2D(16, kernel_size=3, strides=2, input_shape=self.img_shape, padding="same")) model.add(LeakyReLU(alpha=0.2)) model.add(Dropout(0.25)) ''' 这里的输出需要计算 [(14-3)+2]/2+1=6.5+1=6+1=7(下取整) 因此,经过下面卷积层后,数据的形状为(None, 7, 7, 32) ''' model.add(Conv2D(32, kernel_size=3, strides=2, padding="same"))# (None, 7, 7, 32)

同样的,若输出是方形张量,则计算转置卷积输出大小的公式是:

本文共计579个文字,预计阅读时间需要3分钟。

如何计算【防忘笔记】中卷积层的输入输出尺寸?

卷积神经网络输出大小计算方法:TensorFlow中常用卷积操作及API正方向卷积:Conv2D()示例:Conv2D(128, kernel_size=4, padding=same)

卷积输出大小计算方法 tensorflow中的常用卷积操作API

正向卷积:Conv2D()

举例:

... Conv2D(128, kernel_size=4, padding="same") # 128个过滤器(128维),卷积核大小为4,边缘填充 # 注:此处步长为默认值1,此时使用padding="same",输出数据的形状会保持不变(与输入一致) # 若步长不为1,则根据计算公式计算(后面会介绍)

升采样:UpSampling2D()

举例:

... model.add(Reshape((7, 7, 128)))# Reshape成以下形状 model.add(UpSampling2D())# 上采样,对数据进行插值,形状变成之前的两倍 --->(None, 14, 14, 128) ... pytorch中的常用卷积操作API

正向卷积:nn.Conv2d()

举例:

nn.Conv2d(256, 512, 4, stride=1, bias=False), ... # 输入256通道,输出512通道,卷积核为4,步长为1 # 注:这里的"通道"指卷积操作之后得到的"特征图"的数量,而不是数据的形状 # 数据形状计算按照公式

转置卷积:nn.ConvTranspose2d()

举例:

nn.ConvTranspose2d(256, 128, 4, stride=2, bias=False) ... # 输入256通道,输出128通道,卷积核为4,步长为2,逻辑与Conv2d()类似 卷积操作输入输出数据形状的计算方法

假设输入是一个正方形,宽度与高度相等

那么计算卷积输出大小的公式是:

L形括号的意义是取括号内数值的数学下限

如何计算【防忘笔记】中卷积层的输入输出尺寸?

例如:2.3 --> 2

例子:

# 输入形状是28,28,1 # 16个过滤器(16维),卷积核大小为3,步数2,边缘填充 model.add(Conv2D(16, kernel_size=3, strides=2, input_shape=self.img_shape, padding="same")) model.add(LeakyReLU(alpha=0.2)) model.add(Dropout(0.25)) ''' 这里的输出需要计算 [(14-3)+2]/2+1=6.5+1=6+1=7(下取整) 因此,经过下面卷积层后,数据的形状为(None, 7, 7, 32) ''' model.add(Conv2D(32, kernel_size=3, strides=2, padding="same"))# (None, 7, 7, 32)

同样的,若输出是方形张量,则计算转置卷积输出大小的公式是: