如何在 keras 中创建具有特定大小层的多层感知器?

数据挖掘 机器学习 深度学习 喀拉斯
2022-03-07 10:16:19

我正在尝试根据其描述重新创建模型。该模型被描述为“大小为 500 ... 10 的 10 层”。据我了解,大小是指隐藏单元的数量,我可以使用 model.add(dense) 自定义

我的代码如下所示:

model = Sequential() 
model.add(Conv2D(32, (3,3), activation='relu', input_shape=input_shape)
model.add(Dense(500, activation = 'relu')) 
... 
model.add(Dense(10, activation = 'softmax'))

但是,它产生的准确率非常低(比我应该得到的低约 20%)。

难道我做错了什么?

2个回答

这可能有很多原因。据我了解,您尝试重复某人的结果,而您所知道的只是架构。您的 keras 架构似乎是正确的,但您还应该考虑到:

  1. 数据——作者是否使用了数据增强?
  2. 正则化,例如 dropout、L1、L2、批量标准化 - 可以显着影响您的结果。
  3. 其他超参数,例如优化器、批量大小等。您是否对这些参数进行了网格/随机搜索?

如果你把这一切都考虑进去了,给我们提供更完整的训练代码,这样我们就不用猜测了。

如果我根据问题的标题得到正确的观点,那么在您的代码中,您并没有制作多层感知器。你试图以某种方式制作一个卷积网络。在 MLP 中,您只需堆叠密集层。执行类似于以下代码片段的操作,它仅堆叠密集层:

model = Sequential()
model.add(keras.layers.Dense(10))
model.add(keras.layers.Dense(10))
model.add(keras.layers.Dense(10))
model.add(keras.layers.Dense(10, activation = 'softmax'))