【发布时间】:2019-01-23 17:54:41
【问题描述】:
我正在尝试了解神经网络并编写了一个简单的反向传播神经网络,该网络使用 sigmoid 激活函数和随机权重初始化。我尝试在输入层中与两个输入值 3 和 2 相乘,在输出层中与目标输出 6 相乘。当我执行我的代码时,w1 和 w2 的值不断增加,并且不会停在正确的值上。
我是 Python 和神经网络的新手,希望能得到帮助。
import numpy as np
al0 = 3
bl0 = 2
import random
w1 =random.random()
w2 =random.random()
b = 0.234
ol1 = 6
def sigm(x,deriv=False):
if deriv==True:
return x*(1-x)
return 1/(1+np.exp(-x))
y = sigm(x)
E = 1/2*(ol1 - y)**2
dsig = sigm(x,True)
dyE = y-ol1
for iter in range(10000):
syn0 = al0*w1
syn1 = bl0*w2
x = syn0 + syn1 + b
dtotal1 = dyE*dsig*al0
w1 = w1 + 0.01*dtotal1
dtotal2 = dyE*dsig*bl0
w2 = w2 + 0.01*dtotal2
w1
w2
【问题讨论】:
-
在分配之前,您似乎在使用
x。 -
我预计
w1和w2会继续增加,因为看起来你会在循环中不断地向它们添加正数。
标签: python numpy neural-network