反向传播算法

匿名 (未验证) 提交于 2019-12-03 00:38:01

本文用于学习反向传播算法!!!

#单隐层神经网络使用反向传播算法训练模型 import numpy as np  #使用sigmoid激活函数 def sigmoid(x,deriv=False):     if(deriv==True):         return (1-x)*x     return 1/(1+np.exp(-x))  #训练数据集 x=np.array([[0,0,1],     [0,1,1],     [1,0,1],     [1,1,1],     [0,0,1]]) y=np.array([[0],     [1],     [1],     [0],     [0]])  #权重随机初始化 np.random.seed(2) w0 = 2*np.random.random((3,4))-1 w1 = 2*np.random.random((4,1))-1  for i in range(10000): 	#前向传播     l0 = x     l1 = sigmoid(np.dot(l0,w0))     l2 = sigmoid(np.dot(l1,w1))     l2_error = -(y-l2)     if(i%1000==0):         print("error"+str(np.mean(np.abs(l2_error))))     #反向传播     l2_delta = l2_error*sigmoid(l2,True) #输出层的误差     w_ho_pd = l1.T.dot(l2_delta) #隐层到输出层w的偏导      l1_error = l2_delta.dot(w1.T)     l1_delta = l1_error*sigmoid(l1,True) #隐藏层的误差     w_ih_pd = l0.T.dot(l1_delta) #输入层到隐层w的偏导      w1 -= w_ho_pd     w0 -= w_ih_pd  def predict_model(x,w0,w1):     l1 = sigmoid(np.dot(x,w0))     l2 = sigmoid(np.dot(l1,w1))     if l2>=0.5:     	print("1")     else:     	print("0")  predict_model([0,1,1],w0,w1)

参考资料:

1. BP算法 https://www.jianshu.com/p/c5cda5a52ee4

2. 唐宇迪 教学视频

文章来源: 反向传播算法
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!