繁体   English   中英

为什么我的keras模型有这么多参数?

[英]Why does my keras model have so many parameters?

model = ke.Sequential()

model.add(Convolution2D(32,kernel_size=(2,2),activation='relu',input_shape=(360,720,1)))
model.add(Convolution2D(32, 2, 2, activation='relu'))
model.add(MaxPooling2D(pool_size = (3,3)))
model.add(Dropout(.3))


model.add(Flatten())
model.add(Dense(2, activation='softmax'))

以上是我的CNN的当前架构。 但是,它说它有180万个可训练参数。 为什么会这样呢? 我以为第一层给出了(32 * 4 = 128个参数),但是接下来如何查找模型其余部分中有多少个参数呢?

我的理解是,由于CNN体系结构是共享权重,因此它们仅应依赖于过滤和最大池化。 为什么我会有这么多参数? 我应该如何减少数量?

不是在问如何使用“摘要”查找参数的数量。 我在问为什么我的模型有这么多参数,以及如何减少这个数量。 我不直观地理解为什么该模型应具有180万个可训练参数。

使用摘要确认以下内容(相信我,会有答案:D):

  • 在第二次转化之后,您得到的形状像(None, 358,718,32)
  • 然后,池化将为您提供非常接近的内容(None, 120, 240, 32)
  • Flatten层给了您(None, 120*240*32) (None, 921600) !!!!

这就是参数太多的原因!

对于每个输入,密集层将具有2个权重,外加2个偏差,仅对于密集层而言,共有1843202个参数。

您需要更多的Convs + Poolings才能逐渐减小大小,然后再将大量内容投入Dense层。

大幅降低这些参数的一个好方法是在该Flatten层上方的所有卷积层中添加: subsample=(2, 2) (小心会降低图像/数据的分辨率),如果子采样不起作用,则stride=(2, 2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM