Keras中input_shape和input_dim的区别是什么?

7

我目前正在学习深度学习,遇到了以下疑惑:何时使用input_shape和input_dim参数。

我的数据形状为(798,9),其中有8个输入变量和1个输出变量,因此我的问题是在创建序列模型时:

  • 使用input_shape和
  • 使用input_dim有什么区别?
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=12,input_shape=(6912,),activation='relu' ))
model.add(tf.keras.layers.Dense(32,activation='relu'))

并且

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=12,input_dim=8,activation='relu' ))
model.add(tf.keras.layers.Dense(32,activation='relu'))

有没有人可以详细解释一下如何选择input_size和input_dim,以及它们之间的区别?


在官方文档https://keras.io/getting-started/sequential-model-guide/中已经很好地解释了。将“input_shape”参数传递给“第一层”。某些2D层(例如Dense)支持通过参数“input_dim”指定其输入形状。如果输入是1-D数组,则可以将input_dim用作标量,无需使用shape。 - alec_djinn
1个回答

9

您需要设置 input_shape=(8,),与 input_dim=8 完全相同。

最终的 Dense 层只需要有1个神经元。对于回归问题,您可能希望在最后一层中使用 activation='linear',对于分类问题,您将需要 'sigmoid'

对于更高维度的数据,您需要设置 input_shape = (dim_1, dim2,...)


谢谢,我有点理解了。因为在mnist数据集中,我们为什么要将输入形状设为784呢?我们能否写成28而不是784? - MEET SHAH
你可以使用(28,28)的3D数据(考虑到批量大小),但是你的模型必须相应地构建以处理3D数据。那些(784,)的例子是将数据压平以使用FCN(全连接网络)。CNN(卷积神经网络)将使用形状为(28,28)的图像正确地进行处理。 - Daniel Möller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接