了解基本的神经网络结构
Posted
技术标签:
【中文标题】了解基本的神经网络结构【英文标题】:Understanding of Basic Neural Network Structure 【发布时间】:2020-09-29 20:00:36 【问题描述】:假设我想在 Keras 中编写这个基本的神经网络结构,它在输入层有 10 个单元,在输出层有 3 个单元。
现在如果我使用 Keras,并且输入形状大于 10,它将如何调整。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(10, activation = 'relu', input_shape = (64,)))
model.add(Dense(3, activation = 'sigmoid'))
model.summary()
你看,这里 input_shape 的大小是 64,但是它将如何在第一层有 10 个单位的模型中调整,因为据我所知,输入形状/向量的大小应该等于输入层中的单位数.
或者我没有实现这个神经网络对吗?
【问题讨论】:
你已经实现了 2 层网络。第一层的权重矩阵为 64x10,第二层为 10x3。在图片上,您有 1 层网络,有 10 个输入(不是 64 个)和 3 个输出。这对应于您的第二层。 @Slowpoke 这是不正确的;显示的代码对应于 3 层 网络,因为这里有一个隐式输入层 - 请参阅 Keras Sequential model input layer @desertnaut 我认为的问题是关于不理解什么是全连接层本身,它是如何用矩阵表示的以及输入和输出的数量是什么意思。将输入转换为张量的输入“层”是 keras 技术的东西。当然,我们可以在图表上将其绘制为具有 1 对 1 连接的两列点,但没有理由这样做 @Slowpoke 我的反对意见专门针对您的陈述“您实现了 2 层网络”,正如我已经说过的那样,这是不正确的。 OP 已经实现了一个 3 层网络。关于我认为的问题等,我什么也没说 @desertnaut 您提供的链接有助于我理解。 【参考方案1】:这不是问题。形状 (10,64) 的权重矩阵将用于输入层。您的输入形状为 64,第一个隐藏层有 10 个单位,输出为 3 个单位。对我来说似乎很好。
但是您的输入层本身是 64。所以您得到的是一个 3 层网络,其中隐藏层为 10 个单元。
【讨论】:
【参考方案2】:如果您的输入向量的形状是 64,那么您确实需要一个大小为 64 的输入层。神经网络的输入层不执行任何计算。它只是将输入向前传递到第一个隐藏层。另一方面,它执行其中包含的所有神经元的计算(输入向量和权重的线性组合,后来用作激活函数的输入,在您的情况下是 ReLU)。
在您的代码中,您正在构建一个包含 64 个输入神经元(同样不执行任何计算)、第一个(也是唯一一个)隐藏层中的 10 个神经元和输出层中的 3 个神经元的神经网络。
【讨论】:
以上是关于了解基本的神经网络结构的主要内容,如果未能解决你的问题,请参考以下文章