说明:
只有两层:输入层/输出层
离线算法:样本批量计算(numpy矩阵运算的威力在此体现出来了)
效果还蛮不错:
import numpy as np ‘‘‘极简两层反传(BP)神经网络‘‘‘ # 特征样本 X = np.array([[0, 0, 1], [0, 1, 1], [1, 0, 1], [1, 1, 1]]) # 类别样本 y = np.array([0, 0, 1, 1]) # 权值矩阵 初始化 Wi = 2 * np.random.random(3) - 1 for iter in range(10000): # 前向传播,计算误差 li = X lo = 1 / (1 + np.exp(-np.dot(li, Wi))) # sigmoid函数 lo_error = y - lo # 后向传播,更新权值 lo_delta = lo_error * lo * (1 - lo) # sigmoid函数的导数(梯度下降) Wi += np.dot(lo_delta, li) print("训练效果:\n", lo)
原文:http://www.cnblogs.com/hhh5460/p/5249983.html