计算CNN模型中Conv层的输出大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算CNN模型中Conv层的输出大小相关的知识,希望对你有一定的参考价值。

在卷积神经网络中,如何知道特定转换层的输出? (我使用keras构建CNN模型)

例如,如果我使用的是一维转换层,其中number_of_filters = 20,kernel_size = 10,input_shape(500,1)

 cnn.add(Conv1D(20,kernel_size=10,strides=1, padding="same",activation="sigmoid",input_shape=(Dimension_of_input,1)))

如果我使用二维转换层,其中number_of_filters = 64,kernal_size =(5,100),input_shape =(5,720,1)(高度,宽度,通道)

 Conv2D(64, (5, 100),
       padding="same",
       activation="sigmoid",
       data_format="channels_last",
       input_shape=(5,720,1)

上面两个转换层的输出数是多少?是否有任何方程可用于了解卷积神经网络中转换层的输出数量?

答案

是的,有方程式,你可以在CS231N course website找到它们。但由于这是一个编程站点,Keras通过使用模型的summary函数提供了一种简单的方法来获取此信息。

model = Sequential()
fill model with layers
model.summary()

这将在终端/控制台中打印所有层信息,例如输入形状,输出形状和每层的参数数量。

另一答案

实际上,如果你想做的不仅仅是看模型,那么model.summary()函数可能不是你想要的。

如果要访问Keras模型的图层,可以使用返回所有图层的model.layers来执行此操作(assignement将它们存储为列表)。如果您想查看特定图层,可以直接索引列表:

list_of_layers = model.layers
list_of_layers[5] # gives you the 6th layer

您仍在使用的只是对象,因此您可能希望获得特定值。您只需要指定要查看的属性:

list_of_layers[-1].output_shape # returns output_shape of last layer

返回给出模型中最后一层的output_shape元组。如果您已经知道只想查看某个图层的output_shape并且只是执行以下操作,您甚至可以跳过整个列表分配事项:

model.layers[-1].output_shape # equivalent to the above method without storing in a list

如果要在构建模型时使用这些值以指导以某种方式执行(添加池化层或执行填充等),这可能很有用。

以上是关于计算CNN模型中Conv层的输出大小的主要内容,如果未能解决你的问题,请参考以下文章

AlexNet卷积层池化层的输出图像尺寸计算

卷积神经网络中感受野计算

理解CNN卷积层与池化层计算

pytorch 中实现CNN,对CNN的理解心得

pytorch 中实现CNN,对CNN的理解心得

cnn中的步长的目的和重要性是啥