繁体   English   中英

凯拉斯的密集层单位

[英]Units in Dense layer in Keras

我试图理解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'))

我不清楚这个例子。 单位大小大于输入尺寸的数量怎么可能?

神经网络从根本上讲就是矩阵乘法,您在第一部分中谈到的下降不是由于激活函数引起的,而是由于矩阵乘法的性质而发生的:

这里的计算是:输入*权重=输出

所以-> [BATCHSIZE,784] * [784,32] = [BATCHSIZE,32]->输出尺寸

有了这种逻辑,我们可以轻松地解释如何拥有输入形状<<单位大小,它将得到以下计算结果:

-> [BATCHSIZE,20] * [20,64] = [BATCHSIZE,64]->输出尺寸

希望对您有所帮助!

了解更多 :

https://en.wikipedia.org/wiki/Matrix_multiplication

密集层中神经元的总数是机器学习和数据科学界仍未达成共识的主题。 有许多启发式方法可用于定义此方法,我请您参考交叉验证的这篇文章,其中提供了更多详细信息: https : //stats.stackexchange.com/questions/181/how-to-choose-the-number-前馈神经网络中的隐藏层和节点

总之,您指定的两种方法之间的隐藏单位数很可能源自重复的实验和反复试验以达到最佳精度。

但是,对于更多的上下文,我提到的答案是通过实验。 用于输入神经元的784最有可能来自MNIST数据集,这些图像是28 x 28 = 784的图像。我已经看到了神经网络的实现,其中32层隐藏神经元是好的。 将每一层都视为维度转换。 即使缩小到32个维度,也不一定意味着它会失去准确性。 同样,从低维空间过渡到高维空间,如果尝试将点映射到可能更易于分类的新空间,这很常见。

最后,在Keras中,该数字指定当前层的神经元数量。 在引擎盖下,它计算出权重矩阵,以满足从上一层到当前层的向前传播。 在这种情况下,将为785 x 32,其中偏倚单元的神经元数为1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM