我正在尝试使用python构建一个简单的数字识别ANN电路。它有一个输入层,有15个输入,隐藏层和输出层(10个神经元)。我是这个领域的初学者,但我是一位经验丰富的程序员。
当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则会触发。
答案 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 ...是包含下一层输入的列表
所以回答这个问题:"如果一个神经元没有发射,那么它的输出被视为零?"
是
<强>更新强>
以下是我在线发布的评论部分中的链接 当然
- http://coursera.org/learn/machine-learning(还有其他一些甚至是自我节奏的)
- http://shop.oreilly.com/product/9780596529321.do有趣的书(有很多python代码[解释])
- http://en.m.wikipedia.org/wiki/Artificial_neural_network(基础数学)