计算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层的输出大小的主要内容,如果未能解决你的问题,请参考以下文章