低于阈值的人工神经网络射击

时间:2015-10-14 03:50:24

标签: python neural-network

我正在尝试使用python构建一个简单的数字识别ANN电路。它有一个输入层,有15个输入,隐藏层和输出层(10个神经元)。我是这个领域的初学者,但我是一位经验丰富的程序员。

Neural sample network

当a = 1且b = 0且我想要输出f = 0& G = 1

   Value at:
   C
   1*1+-0.5*0= 1  
   D
   1*0+.1*1 = 0.1
   E
   -1*0+-0.5*1 = -0.5

由于Sigmoidal函数仅在值> gt时触发。 0我想只有神经元C和D会发射。那么E的输出会是0吗?

C:1 D:0.1 E:0

     Value at F:
     1*1+0.1*-0.3+0*0.3=0.97 (neuron fires)
     Value at G:
     1*-1+-0.5*0.1+0*.1=  -1.05  (neuron does not fire)

所以输出似乎是F:1& G:0与期望相反。

现在我对反向传播感到困惑。在这种情况下,如何使用反向传播来校正重量?数学步骤会很棒..

伙计们我需要确认数学是否正确。之后我有很多补充问题我不得不问。

我使用sigmoidal函数作为阈值。因此,如果该值小于0,则没有输出,如果大于0则会触发。

如果神经元没有触发,那么它的输出是否为零?

1 个答案:

答案 0 :(得分:0)

我希望这有点帮助,虽然我们的实现/ approches是不同的。

在我的实现(小/简单网络)中,我计算输出作为所有输入节点输出的总和乘以权重在这种情况下,如果神经元没有'它不会被视为输入。
(但在我的实现中,我让负值传递到下一个级别)

伪代码

    for (let idxHidden in hiddensOutput) {
        let sum = 0
        for (let idxInput in inputsOutput) {
          sum = sum + inputsOutput[idxInput] * inputsWeight[idxInput][idxHidden];
        }
        hiddensOutput[idxHidden] = sigmoid(sum);
    }
  

hiddensOutput ...是下一层中的节点列表
   inputsOutput ...是hiddensOutputs的节点的输入列表    inputsWeight ...是这些节点之间权重的矩阵(设置它是"棘手的"部分)    hiddensOutput ...是包含下一层输入的列表

所以回答这个问题:"如果一个神经元没有发射,那么它的输出被视为零?"

  

<强>更新

     

以下是我在线发布的评论部分中的链接   当然