简易神经网络代码测试

来源:互联网 发布:java打印功能 编辑:程序博客网 时间:2024/06/02 07:03
import numpy as np    #非线性sigmoid 函数    def sigmoid(x):    return 1.0/(1.0+np.exp(-x))#sigmoid 函数的导数def dsigmoid(y):    return y * (1 - y)      X = np.array([[1,1,0],              [1,0,1],              [0,1,0],              [0,1,1]])                   y = np.array([[0],              [1],            [0],            [1]])  # 初始化权重值 np.random.seed(1) w0 = 2*np.random.random((3,4)) - 1  w1 = 2*np.random.random((4,1)) - 1print("x.shape=",X.shape) print("y.shape=",y.shape)print("w0.shape=",w0.shape)print("w1.shape=",w1.shape)print("++++++++++ start +++++++++++")for i in range(200):          # 三层网络        L0 = X        L1 = sigmoid(np.dot(L0,w0)) # 4行3列 * 3行4列 = 4行4列        L2 = sigmoid(np.dot(L1,w1)) # 4行4列 * 4行1列 = 4行1列        # 反向传播        L2_loss = y - L2                    L2_delta = L2_loss * dsigmoid(L2)          L1_loss = L2_delta.dot(w1.T)          L1_delta = L1_loss * dsigmoid(L1)          # 修改权重        w1 += L1.T.dot(L2_delta)          w0 += L0.T.dot(L1_delta)              if (i% 20) == 0:              print('L2=\n',L2)            print("loss:" + str(np.mean(np.abs(L2_loss))))  

结果:

x.shape= (4, 3)y.shape= (4, 1)w0.shape= (3, 4)w1.shape= (4, 1)++++++++++ start +++++++++++L2= [[ 0.52285196] [ 0.54384086] [ 0.46307467] [ 0.48895696]]loss:0.488282204733L2= [[ 0.43087433] [ 0.7261144 ] [ 0.37317214] [ 0.5975844 ]]loss:0.370086916587L2= [[ 0.20177665] [ 0.87495685] [ 0.20840768] [ 0.75482148]]loss:0.195101498689L2= [[ 0.11297297] [ 0.92818356] [ 0.1413619 ] [ 0.84438893]]loss:0.120440593708L2= [[ 0.0787109 ] [ 0.94872581] [ 0.11005604] [ 0.88313687]]loss:0.089226065843L2= [[ 0.06128527] [ 0.95938241] [ 0.09196822] [ 0.9042201 ]]loss:0.0724127449157L2= [[ 0.05076403] [ 0.96593555] [ 0.080062  ] [ 0.91759667]]loss:0.0618234525323L2= [[ 0.04369948] [ 0.97040169] [ 0.07154877] [ 0.92693377]]loss:0.0544781972979L2= [[ 0.03860816] [ 0.97365931] [ 0.06510925] [ 0.9338786 ]]loss:0.0490448764646L2= [[ 0.03475039] [ 0.97615208] [ 0.06003704] [ 0.93928146]]loss:0.044838470162



原创粉丝点击