Keras-CNN模型参数计算

Keras-CNN模型参数计算,keras,Keras,我的cnn模型是使用Keras 1.1.1创建的,它有两个卷积池层,后面是两个密集层,在第二个卷积池层和第一个密集层之后添加了dropout。代码如下: model=Sequential() #卷积池层 添加(卷积2D(32,5,5,输入形状=输入形状)) 添加(激活('relu')) add(MaxPooling2D(池大小=(2,2))) 模型添加(卷积2D(64,5,5)) 添加(激活('relu')) add(MaxPooling2D(池大小=(2,2))) 模型。添加(辍学率(0.25

我的cnn模型是使用Keras 1.1.1创建的,它有两个卷积池层,后面是两个密集层,在第二个卷积池层和第一个密集层之后添加了dropout。代码如下:

model=Sequential()
#卷积池层
添加(卷积2D(32,5,5,输入形状=输入形状))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
模型添加(卷积2D(64,5,5))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
模型。添加(辍学率(0.25))
#致密层
model.add(展平())
模型.添加(密度(100))
添加(激活('relu'))
模型。添加(辍学率(0.5))
模型。添加((密集(2)))
添加(激活('softmax'))
#优化器
sgd=sgd(lr=1e-3,衰变=1e-6,动量=0.9,nesterov=True)
model.compile(loss='classifical_crossentropy',
优化器=新加坡元,
指标=[‘准确度’])
打印model.summary()
模型汇总表如下所示:

我不清楚如何计算第二卷积层(即,由红色矩形指示的51264)的参数数量。我认为这个数字应该是(5*5+1)*64=1664,因为卷积内核的大小是5*5,需要提取64个特征映射


此外,我已经实现了辍学。为什么参数表没有反映这一点。虽然表中列出了缺失(层),但似乎给出了没有缺失的参数编号。任何人都可以帮我解释参数摘要吗?

这是一个非常简单的基本概念计算。通过查看您的代码和模型摘要,这是我的步骤

步骤1:计算参数的公式

总参数=
(过滤器高度*过滤器宽度*输入图像通道+1)*过滤器数量

步骤2:计算第一层的参数

过滤器高度=5

filter\u weight=5

input\u image\u channels=1

过滤器的数量=32

虽然你还没有向我们提供输入 图像通道,但我通过你的参数值计算出来

现在,我们将计算第一个conv层的参数数量

总参数=(5*5*1+1)*32=832

第3步:同样,我们可以计算第二个conv层请注意,前一层的过滤器数量将成为当前层输入图像的通道数量。

过滤器高度=5

filter\u weight=5

input\u image\u channels=32

过滤器的数量=64

现在,我们将计算第二个conv层的参数数量

总参数=(5*5*32+1)*64=51264


关于问题的第二部分:


辍学层在训练期间随机禁用神经元。它们仍然存在于模型中,因此不会从模型摘要中的参数数量中扣除。

在创建网络后键入模型。计算参数()。

关于退出:这会在训练期间随机禁用神经元。它们仍然存在于您的模型中,因此不会从模型摘要中的参数数量中扣除。我认为您是对的谢谢!这是有道理的Hey@jingweimo,如果我的回答有道理的话,你能接受它吗。@blitu12345谢谢你的回答,你知道我们为什么加1吗?@Ramibiases@Rami例如,如果它是
卷积2D(32,5,5,input\u shape=input\u shape,bias=False)
则不添加1。默认情况下,这是真的。