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

标签 python machine-learning neural-network keras

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/

相关文章:

python - 如何获取桌面上像素的颜色? (Linux)

python - 如何在单独的文件中组织所有不同的参数

dataset - 用于神经网络模型预测的数据的缺失值

python - 负对数似然的减少参数

matlab - 无监督过滤器特征选择 - 按相关性排名

neural-network - 使用预训练的词嵌入 - 如何为未知/OOV token 创建向量?

python - 我如何知道我的神经网络模型是否过拟合(Keras)

python - 未排序列表与线性和二进制搜索

python - import-im6.q16 : not authorized error 'os' @ error/constitue. c/WriteImage/1037 用于 Python 网络抓取工具

java - 如何在所有映射器中使用相同的数据?