当前位置: 首页 > 知识库问答 >
问题:

如何计算卷积神经网络中的参数总数?[重复]

咸星波
2023-03-14

如何计算CNN网络中的参数总数

代码如下:

input_shape = (32, 32, 1)
flat_input_size = input_shape[0]*input_shape[1]*input_shape[2]
num_classes = 4

cnn_model = Sequential()
cnn_model.add(Conv2D(32, (3, 3), padding='same',
                 input_shape=input_shape))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Conv2D(64, (3, 3)))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Conv2D(128, (3, 3), padding='same'))
cnn_model.add(Activation('relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Dropout(0.25))
cnn_model.add(Flatten())
cnn_model.add(Dense(512))
cnn_model.add(Activation('relu'))
cnn_model.add(Dropout(0.5))
cnn_model.add(Dense(num_classes))
cnn_model.add(Activation('softmax'))

如何获取320、18496、73856、590336、2052,有人能解释一下吗?

共有1个答案

孟鸿朗
2023-03-14

您可以使用以下通用公式:

channels_inkernel_widthkernel_heightchannels_outnum_channels

第一个例子是:

<代码>1*3*3*32=320

第二点:

<代码>32*3*3*64 64=18496

通道数量的增加是偏差项。

 类似资料:
  • 我正在使用千层面为MNIST数据集创建CNN。我将密切关注这个示例:卷积神经网络和Python特征提取。 我目前拥有的CNN架构(不包括任何退出层)是: 这将输出以下图层信息: 并输出可学习参数的数量为217,706 我想知道这个数字是如何计算的?我已经阅读了许多资源,包括这个StackOverflow的问题,但没有一个明确概括了计算。 如果可能,每层可学习参数的计算是否可以泛化? 例如,卷积层:

  • 我是CNN研究的新手,我从看Andrew'NG的课程开始。有一个例子我不明白: 他是如何计算#参数值的?

  • 我指的是在此链接https://richliao.github.io/supervised/classification/2016/11/26/textclassifier-convolutional上实现的“使用CNN的文本分类”。在“简化卷积”一节中,他们使用了以下Keras层: Conv1D(128、5,激活='RELU')

  • 假设我有一幅尺寸为125*125的RGB图像,我使用了10个尺寸为5*5、步长为3的过滤器,那么这一层的特征图是什么?特征图的参数总数是多少?10*((125-5)/3)1=(41*41*10)(过滤器数量)但RGB图像和灰度图像之间的区别是什么?因此,对于RGB图像,它应该是41*41*30(过滤器数量*输入图像通道数量)?对于参数总数:5*5*3*10=750?

  • 我找不到正确的公式来计算CNN中一个卷积层中的MAC数量。我从Quora尝试了这个公式 式中:输入特征映射的HW大小;KL滤波器大小S跨距C通道输入M输出特征映射N输入特征映射数 我举了一个例子:1个输入图像5x5x1 1个过滤器3x3x1然后我做了一个天真的计算,我得到了81个MAC。但当我使用上述公式时,ai得到了9。 我想有些事情我不明白。 提前感谢

  • 我在Keras有卷积神经网络。我需要知道每个图层中要素地图的尺寸。我的输入是28 x 28像素的图像。我知道有一种计算方法,但我不知道如何计算。下面是我使用Keras的代码片段。 最后,这就是我想画的。非常感谢。