【发布时间】:2019-05-24 21:36:31
【问题描述】:
我正在尝试理解 Keras 中 ANN 架构的概念。任何 NN 中的输入神经元数量应等于特征/属性/列的数量。因此,在矩阵为 (20000,100) 的情况下,我的输入形状应该有 100 个神经元。在 Keras 页面的示例中,我看到了一段代码:
model = Sequential([Dense(32, input_shape=(784,)),
,这几乎意味着输入形状有 784 列,而 32 是输出空间的维数,这意味着第二层将有 32 的输入。我的理解是,发生如此显着的下降是因为一些由于激活功能,单位未激活。我的理解正确吗?
同时,另一段代码显示输入神经元的数量高于特征数量:
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
这个例子我不清楚。单位的大小怎么会大于输入维度的数量?
【问题讨论】:
-
Dense 层中的神经元总数是机器学习和数据科学界尚未达成一致的话题。有许多启发式方法可用于定义这一点,我建议您参阅 Cross Validated 上的这篇文章,其中提供了更多详细信息:stats.stackexchange.com/questions/181/…。总而言之,您指定的两种方法之间的隐藏单元数量很可能源自重复实验和反复试验,以实现最佳准确性。
-
@rayryeng 谢谢。我的观点不是如何选择单元/层数。我不明白:1)我的输入形状 784 是如何降级到 32 的; 2)为什么我的输入形状(第二个例子)小于单位数。
-
我提到的答案是通过实验。 784 最有可能来自 MNIST 数据集,即 28 x 28 = 784 的图像。我已经看到神经网络的实现,其中隐藏层的 32 个神经元是好的。将每一层视为一个维度转换。即使你降到 32 维,也不一定意味着它会失去准确性。同样从低维空间到高维空间,如果您尝试将点映射到可能更容易分类的新空间,这很常见。这取决于。
-
@rayryeng。好的,总结一下:第一个示例中的 32 本质上是隐藏层 1 的大小,对吗?而且这个数字与输入层中有多少神经元无关,对吧?
-
是的,没错。在 Keras 中,数字指定当前层有多少神经元。在底层,它计算出满足从前一层到当前层的前向传播的权重矩阵。在这种情况下,它将是 785 x 32,偏置单元有 1 个额外的神经元。
标签: python machine-learning keras deep-learning