NG 神经网络 构建网络基础

来源:互联网 发布:js 如何弹出模态框 编辑:程序博客网 时间:2024/06/04 00:53
import numpy as npimport pandas as pd # 两层神经网络# sigmoid 函数 输出0-1 分界为0.5print('-----------------------------两层神经网络-----------------------------------')def nonlin(x,deriv=False):    if(deriv==True):        return x*(1-x)    return 1/(1+np.exp(-x))X = np.array([  [1,0,0],                [1,0,1],                [1,1,0],                [1,1,1] ])y = np.array([[0,0,0,1]]).T# 为你的随机数设定产生种子是一个良好的习惯np.random.seed(1)# 下面目的矩阵的值从 0->1 扩充到 -1 ->  1syn0 = 2*np.random.random((3,1)) - 1# print(syn0) # for iter in range(10000):for j in range(100000):    l0 = X    l1 = nonlin(np.dot(l0,syn0))    l1_error = y - l1    # # 误差控制    if (j% 1000) == 0:        print ("Error:" + str(np.mean(np.abs(l1_error))))    #     # 精度控制    if (np.mean(np.abs(l1_error))<=0.01):        print('迭代次数:',j,' 迭代精度:',np.mean(np.abs(l1_error)))        break    l1_delta = l1_error * nonlin(l1,True)    # update weights    syn0 += np.dot(l0.T,l1_delta)# print(syn0) #输出权值l0=np.array([[1,0,1],            [1,1,0],            [1,0,0],            [1,1,1]])l1 = nonlin(np.dot(l0,syn0))print(l1)print(l1[l1<=0.5])print(l1[l1>0.5])print('\n\n\n-----------------------------三层神经网络-----------------------------------')# 三层神经网络import numpy as np def nonlin(x,deriv=False):    if(deriv==True):        return x*(1-x)    return 1/(1+np.exp(-x)) X = np.array([[1,0,0],            [1,0,1],            [1,1,0],            [1,1,0],            [1,1,1]]) y = np.array([[1],            [0],            [0],            [0],            [1]]) np.random.seed(1) syn0 = 2*np.random.random((3,3)) - 1syn1 = 2*np.random.random((3,1)) - 1 for j in range(100000):     l0 = X    l1 = nonlin(np.dot(l0,syn0))    l2 = nonlin(np.dot(l1,syn1))     l2_error = y - l2     if (j% 1000) == 0:        print ("Error:" + str(np.mean(np.abs(l2_error))))        # 精度控制    if (np.mean(np.abs(l2_error))<=0.01):        print('迭代次数:',j,' 迭代精度:',np.mean(np.abs(l1_error)))        break    l2_delta = l2_error*nonlin(l2,deriv=True)     l1_error = l2_delta.dot(syn1.T)     l1_delta = l1_error * nonlin(l1,deriv=True)     syn1 += l1.T.dot(l2_delta)    syn0 += l0.T.dot(l1_delta)# print(syn0)# print(syn1)l0=np.array([[1,0,1],            [1,1,0],            [1,0,0],            [1,1,1]])l1 = nonlin(np.dot(l0,syn0))l2 = nonlin(np.dot(l1,syn1))print(l2)print(l2[l2<=0.5])print(l2[l2>0.5])print('\n\n\n-----------------------------四层神经网络-----------------------------------')# 四层神经网络import numpy as np def nonlin(x,deriv=False):    if(deriv==True):        return x*(1-x)    return 1/(1+np.exp(-x))A = pd.read_table('DATA/01.txt',header=None,usecols = (0,1,2))A.insert(0,'insert',1)X = np.array(A.iloc[:,:3])y = np.array(A.iloc[:,3:4]) np.random.seed(1) syn0 = 2*np.random.random((3,3)) - 1syn1 = 2*np.random.random((3,3)) - 1syn2 = 2*np.random.random((3,1)) - 1 for j in range(100000):     l0 = X    l1 = nonlin(np.dot(l0,syn0))    l2 = nonlin(np.dot(l1,syn1))    l3 = nonlin(np.dot(l2,syn2))     l3_error = y - l3     if (j% 1000) == 0:        print ("Error:" + str(np.mean(np.abs(l3_error))))    if (np.mean(np.abs(l3_error))<=0.05):        print('迭代次数:',j,' 迭代精度:',np.mean(np.abs(l1_error)))        break     l3_delta = l3_error*nonlin(l3,deriv=True)     l2_error = l3_delta.dot(syn2.T)     l2_delta = l2_error * nonlin(l2,deriv=True)    l1_error = l2_delta.dot(syn1.T)    l1_delta = l1_error * nonlin(l1,deriv=True)     syn2 += l2.T.dot(l3_delta)    syn1 += l1.T.dot(l2_delta)    syn0 += l0.T.dot(l1_delta)# print(syn0)# print(syn1)# print(syn2)l0=np.array([[1,0.089392,-0.715300],            [1,1.825662,12.693808],            [1,0.197445,9.744638],            [1,0.126117,0.922311],            [1,-0.679797,1.220530],            [1,0.677983,2.556666],            [1,0.761349,10.693862],            [1,-2.168791,0.143632],            [1,1.388610,9.341997],            [1,0.317029,14.739025]])l1 = nonlin(np.dot(l0,syn0))l2 = nonlin(np.dot(l1,syn1))l3 = nonlin(np.dot(l2,syn2))print(l3)print(l3[l3<=0.5])print(l3[l3>0.5])



运行结果:

-----------------------------两层神经网络-----------------------------------
Error:0.48455077551
Error:0.0444677826081
Error:0.030464932497
Error:0.0245163114868
Error:0.021047011697
Error:0.018712592658
Error:0.0170066660447
Error:0.0156909428592
Error:0.0146368034625
Error:0.0137679855874
Error:0.0130360570615
Error:0.0124086017331
Error:0.0118630036373
Error:0.011382943945
Error:0.0109563148428
Error:0.0105739196651
Error:0.0102286316631
迭代次数: 16720  迭代精度: 0.00999979932783
[[  1.25591557e-02]
 [  1.25591557e-02]
 [  2.44323537e-06]
 [  9.85121557e-01]]
[  1.25591557e-02   1.25591557e-02   2.44323537e-06]
[ 0.98512156]






-----------------------------三层神经网络-----------------------------------
Error:0.500155707366
Error:0.139453935606
Error:0.122485366567
Error:0.117028663527
Error:0.114165642814
Error:0.112349173826
Error:0.111073027379
Error:0.110118071989
Error:0.109372821772
Error:0.108774431307
Error:0.108285202662
Error:0.107882132055
Error:0.107552284458
Error:0.10729177679
Error:0.10710909487
Error:0.107039343253
Error:0.107204216676
Error:0.108195139925
Error:0.115919208648
Error:0.0408730192789
Error:0.021173625565
Error:0.0158654395695
Error:0.0132249633003
Error:0.011583602561
Error:0.0104387131983
迭代次数: 24480  迭代精度: 0.00112745925828
[[ 0.01166526]
 [ 0.00817161]
 [ 0.98937065]
 [ 0.98864111]]
[ 0.01166526  0.00817161]
[ 0.98937065  0.98864111]






-----------------------------四层神经网络-----------------------------------
Error:0.510382052745
Error:0.344920246032
Error:0.344098705164
Error:0.34406983332
Error:0.343733532198
Error:0.38199380191
Error:0.343919702086
Error:0.343688201419
Error:0.343573446133
Error:0.343500887387
Error:0.343449556065
Error:0.343410719024
Error:0.343407265729
Error:0.343358796411
Error:0.343337062547
Error:0.343318573148
Error:0.343308769237
Error:0.343291086203
Error:0.343278328402
Error:0.343304086848
Error:0.343258805497
Error:0.343249187118
Error:0.34324409514
Error:0.343235505955
Error:0.34322668064
Error:0.343406238303
Error:0.343215086551
Error:0.343215673114
Error:0.343209060337
Error:0.343231628407
Error:0.343200462597
Error:0.343393402134
Error:0.343938548093
Error:0.344008045469
Error:0.343369481325
Error:0.343247676782
Error:0.0550039251298
Error:0.358934335169
Error:0.309997493342
Error:0.309684307143
Error:0.30952781002
Error:0.0759738463756
Error:0.0754937800216
Error:0.075259478761
Error:0.0751518820373
Error:0.0751052314702
Error:0.0750852374849
Error:0.0750774899474
Error:0.0750766860016
Error:0.075082706627
Error:0.0751031586632
Error:0.0751711078183
Error:0.0753521458048
Error:0.0752120478988
Error:0.0749374228862
Error:0.0748046319331
Error:0.074742342494
Error:0.0747056699884
Error:0.074682178081
Error:0.0746661992771
Error:0.0746547193987
Error:0.0746459925235
Error:0.0746388999338
Error:0.0746324531551
Error:0.0746257121214
迭代次数: 64771  迭代精度: 0.00180964757764
[[ 0.99992396]
 [ 0.04432726]
 [ 0.04432726]
 [ 0.99992395]
 [ 0.99992393]
 [ 0.99992276]
 [ 0.04432726]
 [ 0.99992395]
 [ 0.04432726]
 [ 0.04432726]]
[ 0.04432726  0.04432726  0.04432726  0.04432726  0.04432726]
[ 0.99992396  0.99992395  0.99992393  0.99992276  0.99992395]


***Repl Closed***