我通读了以下页面:http://neuralnetworksanddeeplearning.com/chap1.html以更好地了解神经网络的工作原理。我想用Java创建一个没有反向传播或训练的简单前馈网络。

我不明白的是网络中每个“神经元”层所涉及的数学。说我有三层。第一层采用大小为100的输入向量。这是否意味着我的第一层将具有100个神经元?这是否还意味着每个神经元的输入将是所有100个输入的总和乘以权重?这是我的Neuron激活功能的输入吗?

在本章中,提到了神经元/感知器的所有输入之和可以重新表示为输入(x)和权重(w)的点积。我可以将它们视为两个单独的向量,它们的点积给我x1w1 x2w2 x3w3 ..等等,但是x1w1 + x2w2 + ..的总和又如何等于点积?

最后,如果假设一个层的输入为100,输出的输出为1000,这是否意味着该层实际上将具有1000个神经元,每个神经元需要100个输入?那么该层每个神经元输出1个值,从而提供1000个输出?

如果这些问题完全不完整或无关紧要,我先向您道歉。到目前为止,我已经在线阅读了一些文档,这是我的理解,但是如果不询问真正了解它的人,就很难验证。如果您有其他资源或视频会有所帮助,我们将不胜感激。

最佳答案

这是我在stackOverflow中的第一个答案,所以请放轻松。

如果我对您的问题理解正确,那么您想知道人工神经元背后的数学如何工作。神经元由以下列表中所示的5个组件组成。
(下标i表示第i个输入或权重。)


一组输入,xi。
一组重量,无线。
阈值,u。
激活功能,f。
单个神经元输出y。


人工神经元具有相当简单的结构。

使用单位步进激活功能,您可以确定一组权重(和阈值),这些权重将产生以下分类:
Click to view classification

看数字4。激活函数f。身份功能是最简单的,可以发生许多不同的功能。

神经元输出Y是将激活函数应用于输入的加权和减去阈值的结果。

该值可以是离散的也可以是实数,具体取决于所使用的激活功能。

Here's具有特定函数F的Y的输出。

一旦计算出输出,就可以将其传递到另一个神经元(或一组神经元)或通过外部环境进行采样。神经元输出的解释取决于所考虑的问题

@Seephore

原则上,在人工神经网络中可以使用的隐藏层数没有限制。可以使用“堆栈”或深度学习文献中的其他技术来训练此类网络。是的,您可能有1000层,尽管我不知道您是否能获得很多好处:在深度学习中,我通常看到1-20个隐藏层之间的某个位置,而不是1000个隐藏层。在实践中,层数是基于务实的考虑,例如,在合理的训练时间且不会过度拟合的情况下,这将导致良好的准确性。

您要问的是:
  我要假设您要说的是100个输入和1000个输出?
当输入采用加权值时,其输出会将其提供给下一层中的所有其他节点(神经元),但该值仍来自给定节点。

有很多关于Java的“希望洗手”书,但是如果您真的想读一读,请阅读This

java - 了解神经网络层,节点和点积-LMLPHP

关于java - 了解神经网络层,节点和点积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40413247/

10-12 23:57