了解密集层的参数单位和input_dim之间的差异

时间:2019-06-05 05:00:49

标签: keras

假设我有一个大小为(1000,64)的数据集,其中64是列数(即要素)。在Keras中,假设我要构建以下模型的NN模型:

  1. 输入层:显然应该是一层神经元数量与我的数据集中要素数量相等的层。因此,这里的神经元数量= 64。
  2. 隐藏层:我希望该隐藏层具有100个神经元。
  3. 输出层:这是一个神经元,因为我正在处理二进制分类问题。

现在,要在Keras中构建上述架构,我通常会执行以下操作:

model = Sequential()
model.add(Dense(units=64, input_dim=64, activation='tanh'))  # Input layer
model.add(Dense(units=100, activation='tanh'))  # Hidden layer
model.add(Dense(units=1, activation='sigmoid')) # Output layer

问题是我无法区分units层的参数input_dimDense()(对于作为第一层的角色(输入层))。我确实知道input_dim旨在指定数据集中的要素数量(在我的情况下为64),但是我不了解units在此处的作用输入层units应该是64吗?换句话说,输入层的参数units是否应该与input_dim相同?

非常感谢您。

1 个答案:

答案 0 :(得分:1)

让我们先看一下绘画作品

enter image description here

就keras顺序模型符号而言,您将需要两个密集层(在图中标记为虚线框)

  1. 密集层1:应具有100个神经元,每个神经元都应作为输入64个要素,因此该密集层的定义为 Dense(units=100, input_dim=64)
  2. 密集层2:您在这里想要一个神经元,它将上一个密集层的输出作为输入。 input_dim对于密集层不是必需的,因为它已连接到顺序模型中的先前密集层,并且无论先前密集层的输出是什么,它都作为输入(对于每个神经元) Dense(units=1)

因此模型将是:

model = Sequential()
model.add(Dense(units=100, input_dim=64, activation='tanh'))  # First Hidden layer
model.add(Dense(units=1, activation='sigmoid')) # Output layer

您可以将Dense(units=m, input_dim=n)视为具有m个神经元的层,每个神经元都具有n个输入。该层将输出m输出(每个神经元一个)。