Machine learning 这个神经网络有多少层?

Machine learning 这个神经网络有多少层?,machine-learning,neural-network,Machine Learning,Neural Network,我正在努力确保我使用了正确的术语。下图显示了MNIST示例 X is 784 row vector W is 784X10 matrix b is a 10 row vector The out of the linear box is fead into softmax The output of softmax is fed into the distance function cross-entropy 这个NN有多少层?在该示例中,输入和隐藏层是什么 同样,如果我的理解是正确的,那么

我正在努力确保我使用了正确的术语。下图显示了MNIST示例

X is 784 row vector
W is 784X10 matrix
b is a 10 row vector
The out of the linear box is fead into softmax
The output of softmax is fed into the distance function cross-entropy

这个NN有多少层?在该示例中,
输入
隐藏
层是什么

同样,如果我的理解是正确的,那么有多少层

编辑

@lejlot下面的图是否表示一个包含1个隐藏层的3层NN


看看这张照片:

在第一张图片中,只有两层:

  • 输入层->784个神经元
  • 输出层->10个神经元
您的模型太简单(w包含输入和输出之间的直接连接,b包含偏差项)

如果没有隐藏层,您将获得一个线性分类器,因为线性组合的线性组合又是一个线性组合。隐藏层是模型中包含非线性变换的层

在第二张图片中,您有3层,但您对符号感到困惑:

  • 输入层是放置输入数据的向量x
  • 那么操作->w->+b->f()->就是第一层和第二层之间的连接
  • 第二层是存储结果z=f(xw1+b1)的向量
  • 然后,softmax(zw2+b2)是第二层和第三层之间的连接点
  • 第三层是向量y,在这里存储最终结果y=softmax(zw2+b2)
  • 交叉熵不是训练神经网络的代价函数
编辑:

还有一件事,如果要获得非线性分类器,必须在每个隐藏层中添加非线性变换,在我描述的示例中,如果f()是非线性函数(例如sigmoid、softsign等): z=f(xw1+b1)


如果仅在输出层(最后的softmax函数)中添加非线性变换,则输出仍然是线性分类器。

具有1个隐藏层

你链接到的答案,我称之为2隐藏层NN

您的输入层是X向量。 你的层Wx+b是隐藏层,又名。你照片中的盒子。 输出层是Soft-max。
交叉熵是你的损失/成本函数,根本不是一个层。

我认为他没有隐藏层。神经网络的输入层由784个神经元组成,输出层由10个神经元组成(这是一个10类分类问题)。通过矩阵w,他直接将输入重定向到输出。我认为它有一个输入层和一个输出层。一个你把数据放进去的地方,一个你得到预测的地方。这些层之间的所有东西都是隐藏层。没有隐藏层。Softmax几乎不是一个标准化因子,通常它甚至是内部损耗本身。“层”通常是参数化转换,而softmax没有参数化(softmax中没有可学习的内容),因此可以安全地将其放入损耗本身。如果将softmax放入损耗中,则不会对无训练数据的预测进行规格化。那将是非常奇怪和出乎意料的。我认为你最初的答案是正确的。非线性与隐藏性无关。在添加了偏置项之后,再拍一个s形图,它是非线性的。实际上Rob是对的,这里没有隐藏层,尽管图像有点复杂/不标准。而@Aske的建议(在偏差后加上sigmoid)并不重要,模型仍然是线性的。@lejlot我想我理解你的观点。你能评论一下我所做的编辑吗?啊,新的有一个隐藏层(通常你会在中间添加一些非线性,比如sigmoid或relu,但即使没有它,现在仍然是一个有一个隐藏层的网络)。但命名约定略有不同,“输入”是您的数据,然后“隐藏”将是在第一个w1 x+b1之后生成的内容,然后是在w2 h+b2之后生成的内容的“输出”。权重通常称为“输入层和隐藏层之间的权重”和“隐藏层和输出层之间的权重”。因此,我会用另一种方式画方框,但这只是命名惯例的问题。还有一件事@SamHammamy,你使用的是完全不同的符号。将层调用为权重W和偏差b,它们将表示层之间的连接。看一看我链接的图片。将数据x放置在输入层中。然后w和b是层之间的连接,它们从第一层交叉到第二层,操作z=x*w+b,结果z存储在第二层中。因此,层是存储x和z的地方,w和b是它们之间的连接。你混淆了符号。输入层是放置输入数据的向量x。那么操作->w->+b->f()->就是第一层和第二层之间的连接。第二层是存储结果z=f(xw1+b1)的向量,然后softmax(zw2+b2)是第二层和第三层之间的连接。第三层是向量y,在这里存储最终结果y=softmax(zw2+b2)。交叉熵不是训练神经网络的代价函数。