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

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

漆雕安晏
2023-03-14
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架构应该只依赖于过滤和最大池,因为它们是共享权重。为什么我有这么多参数?我应该如何着手减少这个数字?

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

共有2个答案

林英锐
2023-03-14

大幅降低这些参数的一个好方法是在该平坦层之上的所有卷积层中添加:子样本=(2,2)(小心它会降低图像/数据的分辨率),如果子样本不起作用,那么它就是跨距=(2,2)

栾和风
2023-03-14

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

  • 第二次转换后,您将得到一个类似于(无,358718,32)的形状

这就是这么多参数的原因!

对于每个输入,密集层将有2个权重,加上2个偏差,仅对于密集层,总计1843202个参数。

您需要更多的Convs Poolings来逐渐减少大小,然后将大量的数量投入到密集层中。

 类似资料:
  • 我的代码是: 我的数据如下: 我的结果是: 两个时代后它就卡在那里了。我能做些什么来防止它这么快卡住?

  • 我做了一个模型,预测一个字符在一个图像,做车牌识别。它在我的电脑上运行得非常好,但我需要把这项工作放在一个Android应用程序中。所以我开发了一个小应用程序,将我的keras模型转换为TFLITE。现在它总是预测同一个角色。 有没有更好的方法转换模型,还是我遗漏了什么? 编辑:这是我管理位图的操作

  • 我正在解决欧拉项目的一些问题,必须生成200万质数来解决一个问题。我对埃拉托色尼筛的实现非常慢,但我不知道为什么。有人能解释一下这个实现的主要问题吗?我觉得它很漂亮,然后我发现它非常糟糕:(。我在网上找到了它的另一个实现,它比我的快得多。 编辑:感谢所有的答案!结论是过滤器是问题所在,因为它会遍历每个元素(而不仅仅是那些被标记为非素数的元素),而且每次都会创建一个新列表。用旧的循环和一轮过滤重写它

  • 我下载了mnist数据集(jpg),并用. hdf(. h5)创建了一个模型文件。 图像是使用. h5模型识别的,但是识别率很低... 。 实际编译时精度很低... 我做了吗有问题吗?。 。 图像使用了灰度的28x28图像... ... 历元98/100 1257/1257[==============================================================

  • 在查看std::swap的文档时,我看到了许多专门化<看起来每个STL容器以及许多其他std设施都有专门的交换<我想借助模板,我们不需要所有这些专门化? 例如, 如果我编写自己的