当前位置:   article > 正文

深度学习笔记三:BP神经网络

深度学习笔记三:BP神经网络

我们构建一个三层的神经网络,输入层,隐藏层,输出层,BP神经网络遵从delta规则,采用梯度下降法进行收敛

我们参考人工神经网络理论这本教材,下面是BP神经网络的一些理论推导:




下面是实现代码:

  1. # coding: utf-8
  2. import numpy as np
  3. #输入数据
  4. X = np.array([[1,0,0],
  5. [1,0,1],
  6. [1,1,0],
  7. [1,1,1]])
  8. #标签
  9. Y = np.array([[0,1,1,0]])
  10. #权值初始化,取值范围-1到1
  11. V = np.random.random((3,4))*2-1
  12. W = np.random.random((4,1))*2-1
  13. print(V)
  14. print(W)
  15. #学习率设置
  16. lr = 0.11
  17. def sigmoid(x):
  18. return 1/(1+np.exp(-x))
  19. def dsigmoid(x):
  20. return x*(1-x)
  21. def update():
  22. global X,Y,W,V,lr
  23. L1 = sigmoid(np.dot(X,V))#隐藏层输出(4,4)
  24. L2 = sigmoid(np.dot(L1,W))#输出层输出(4,1)
  25. L2_delta = (Y.T - L2)*dsigmoid(L2)
  26. L1_delta = L2_delta.dot(W.T)*dsigmoid(L1)
  27. W_C = lr*L1.T.dot(L2_delta)
  28. V_C = lr*X.T.dot(L1_delta)
  29. W = W + W_C
  30. V = V + V_C
  31. for i in range(20000):
  32. update()#更新权值
  33. if i%500==0:
  34. L1 = sigmoid(np.dot(X,V))#隐藏层输出(4,4)
  35. L2 = sigmoid(np.dot(L1,W))#输出层输出(4,1)
  36. print('Error:',np.mean(np.abs(Y.T-L2)))
  37. L1 = sigmoid(np.dot(X,V))#隐藏层输出(4,4)
  38. L2 = sigmoid(np.dot(L1,W))#输出层输出(4,1)
  39. print(L2)
  40. def judge(x):
  41. if x>=0.5:
  42. return 1
  43. else:
  44. return 0
  45. for i in map(judge,L2):
  46. print(i)


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/129643
推荐阅读
相关标签
  

闽ICP备14008679号