机器学习之简单三层神经网络实现
来源:互联网 发布:php工程师待遇2016 编辑:程序博客网 时间:2024/05/12 14:42
import numpy as np#本项目实现简单神经网络模型#非线性函数#前向传播:直接返回sigmoid激活函数#反向传播:对sigmoid函数求倒数,即x*(1-x)def nonlin(x,deriv=False): if (deriv == True): return x*(1-x) return 1/(1+np.exp(-x))#输入样本x = np.array([[0,0,1], [0,1,1], [1,0,1], [1,1,1]])#0代表一类,1代表一类y = np.array([[0], [1], [1], [0]])np.random.seed(1)#初始化权重参数,构造一个3行4列的权重参数矩阵w0 = 2*np.random.random((3,4))-1w1 = 2*np.random.random((4,1))-1for j in xrange(60000): #输入层 l0 = x #中间层 l1 = nonlin(np.dot(l0,w0)) #输出层 l2 = nonlin(np.dot(l1,w1)) #计算输出与我们预定的结果的差距,如果l2_error很大,说明误差很大, #需要对W进行较大的调整 l2_error = y-l2 #每10000次打印一下 if (j % 10000) == 0: print "Error:" + str(np.mean(np.abs(l2_error))) #求l2的梯度 l2_delta = l2_error * nonlin(l2,deriv=True) #算出l1对追踪结果误差的影响,w1.T是w1的梯度 l1_error = l2_delta.dot(w1.T) #求l1的梯度 l1_delta = l1_error * nonlin(l1,deriv=True) #对W0,W1进行修正 w1 += l1.T.dot(l2_delta) w0 += l0.T.dot(l1_delta)
Error:0.496410031903Error:0.00858452565325Error:0.00578945986251Error:0.00462917677677Error:0.00395876528027Error:0.00351012256786
0 0
- 机器学习之简单三层神经网络实现
- 机器学习之实现简单的神经网络
- 机器学习笔记--实现简单的神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习之神经网络
- 机器学习算法练习之(二):Python和Tensorflow分别实现简单的神经网络
- 最简单的三层神经网络Matlab实现
- 三层神经网络简单实现(Python版)
- 机器学习-神经网络简单Demo
- 深度学习5:python实现三层神经网络
- 机器学习之递归神经网络RNN实现二进制加法
- 机器学习之 神经网络的实现(二)-->手写识别
- linux安装btsync
- Unity 网格合并
- 对软件架构设计的一些总结和理解
- CCF-CSP 路径解析 JAVA 201604-3
- 机器学习常见算法分类汇总
- 机器学习之简单三层神经网络实现
- Try `dirname --help' for more information.
- 信息奥赛 排序
- Thrift连接池,spring配置化,透明化调用(优化)
- Flask
- Codeforces 583C GCD Table【贪心】
- 剑指offer学习笔记(Java实现)(31-40)
- 快速排序quicksort
- linux kernel 的makefile的组织结构(转)