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 的架构。然而,它说它有 1.8m 个可训练参数。为什么会这样呢?我认为第一层给出了(32*4 = 128 个参数),但是如何找到模型其余部分中有多少个参数?
我的理解是,CNN 架构应该只依赖于过滤和最大池,因为它们是共享权重。那为什么我有这么多参数呢?我应该如何减少数量?
我不是询问如何使用“summary”查找参数数量。我问为什么我的模型有这么多参数以及如何减少这个数量。我直观上不明白为什么这个模型应该有 180 万个可训练参数。
最佳答案
使用摘要来确认以下内容(相信我,会有答案:D):
- 第二次转换后,您将获得类似
(None, 358,718,32)
的形状 - 池化会为您提供非常接近
(无、120、240、32)
的结果
Flatten
层为您提供了(None, 120*240*32)
,即(None, 921600)
!!!!
这就是参数这么多的原因!
密集层的每个输入都有 2 个权重,加上 2 个偏差,总共有 1843202 个密集层参数。
在将大量数据放入密集层之前,您需要更多的Convs + Poolings来逐渐减小大小。
关于python - 为什么我的 keras 模型有这么多参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391083/