python实现简单神经网络算法


Posted in Python onMarch 10, 2018

python实现简单神经网络算法,供大家参考,具体内容如下

python实现二层神经网络

包括输入层和输出层

import numpy as np 
 
#sigmoid function 
def nonlin(x, deriv = False): 
  if(deriv == True): 
    return x*(1-x) 
  return 1/(1+np.exp(-x)) 
 
#input dataset 
x = np.array([[0,0,1], 
       [0,1,1], 
       [1,0,1], 
       [1,1,1]]) 
 
#output dataset 
y = np.array([[0,0,1,1]]).T 
 
np.random.seed(1) 
 
#init weight value 
syn0 = 2*np.random.random((3,1))-1 
 
for iter in xrange(100000): 
  l0 = x             #the first layer,and the input layer  
  l1 = nonlin(np.dot(l0,syn0))  #the second layer,and the output layer 
 
 
  l1_error = y-l1 
 
  l1_delta = l1_error*nonlin(l1,True) 
 
  syn0 += np.dot(l0.T, l1_delta) 
print "outout after Training:" 
print l1
import numpy as np 
 
#sigmoid function 
def nonlin(x, deriv = False): 
  if(deriv == True): 
    return x*(1-x) 
  return 1/(1+np.exp(-x)) 
 
#input dataset 
x = np.array([[0,0,1], 
       [0,1,1], 
       [1,0,1], 
       [1,1,1]]) 
 
#output dataset 
y = np.array([[0,0,1,1]]).T 
 
np.random.seed(1) 
 
#init weight value 
syn0 = 2*np.random.random((3,1))-1 
 
for iter in xrange(100000): 
  l0 = x             #the first layer,and the input layer  
  l1 = nonlin(np.dot(l0,syn0))  #the second layer,and the output layer 
 
 
  l1_error = y-l1 
 
  l1_delta = l1_error*nonlin(l1,True) 
 
  syn0 += np.dot(l0.T, l1_delta) 
print "outout after Training:" 
print l1

这里,
l0:输入层

l1:输出层

syn0:初始权值

l1_error:误差

l1_delta:误差校正系数

func nonlin:sigmoid函数

python实现简单神经网络算法

可见迭代次数越多,预测结果越接近理想值,当时耗时也越长。

python实现三层神经网络

包括输入层、隐含层和输出层

import numpy as np 
 
def nonlin(x, deriv = False): 
  if(deriv == True): 
    return x*(1-x) 
  else: 
    return 1/(1+np.exp(-x)) 
 
#input dataset 
X = np.array([[0,0,1], 
       [0,1,1], 
       [1,0,1], 
       [1,1,1]]) 
 
#output dataset 
y = np.array([[0,1,1,0]]).T 
 
syn0 = 2*np.random.random((3,4)) - 1 #the first-hidden layer weight value 
syn1 = 2*np.random.random((4,1)) - 1 #the hidden-output layer weight value 
 
for j in range(60000): 
  l0 = X            #the first layer,and the input layer  
  l1 = nonlin(np.dot(l0,syn0)) #the second layer,and the hidden layer 
  l2 = nonlin(np.dot(l1,syn1)) #the third layer,and the output layer 
 
 
  l2_error = y-l2    #the hidden-output layer error 
 
  if(j%10000) == 0: 
    print "Error:"+str(np.mean(l2_error)) 
 
  l2_delta = l2_error*nonlin(l2,deriv = True) 
 
  l1_error = l2_delta.dot(syn1.T)   #the first-hidden layer error 
 
  l1_delta = l1_error*nonlin(l1,deriv = True) 
 
  syn1 += l1.T.dot(l2_delta) 
  syn0 += l0.T.dot(l1_delta) 
print "outout after Training:" 
print l2
import numpy as np 
 
def nonlin(x, deriv = False): 
  if(deriv == True): 
    return x*(1-x) 
  else: 
    return 1/(1+np.exp(-x)) 
 
#input dataset 
X = np.array([[0,0,1], 
       [0,1,1], 
       [1,0,1], 
       [1,1,1]]) 
 
#output dataset 
y = np.array([[0,1,1,0]]).T 
 
syn0 = 2*np.random.random((3,4)) - 1 #the first-hidden layer weight value 
syn1 = 2*np.random.random((4,1)) - 1 #the hidden-output layer weight value 
 
for j in range(60000): 
  l0 = X            #the first layer,and the input layer  
  l1 = nonlin(np.dot(l0,syn0)) #the second layer,and the hidden layer 
  l2 = nonlin(np.dot(l1,syn1)) #the third layer,and the output layer 
 
 
  l2_error = y-l2    #the hidden-output layer error 
 
  if(j%10000) == 0: 
    print "Error:"+str(np.mean(l2_error)) 
 
  l2_delta = l2_error*nonlin(l2,deriv = True) 
 
  l1_error = l2_delta.dot(syn1.T)   #the first-hidden layer error 
 
  l1_delta = l1_error*nonlin(l1,deriv = True) 
 
  syn1 += l1.T.dot(l2_delta) 
  syn0 += l0.T.dot(l1_delta) 
print "outout after Training:" 
print l2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python类和函数中使用静态变量的方法
May 09 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
Python检查 云备份进程是否正常运行代码实例
Aug 22 Python
python3使用GUI统计代码量
Sep 18 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
python多线程使用方法实例详解
Dec 30 Python
python 正则表达式参数替换实例详解
Jan 17 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
PyQt5 控件字体样式等设置的实现
May 13 Python
TensorFlow saver指定变量的存取
Mar 10 #Python
TensorFLow用Saver保存和恢复变量
Mar 10 #Python
tensorflow创建变量以及根据名称查找变量
Mar 10 #Python
Python2中文处理纪要的实现方法
Mar 10 #Python
python实现冒泡排序算法的两种方法
Mar 10 #Python
Python使用pyh生成HTML文档的方法示例
Mar 10 #Python
tensorflow获取变量维度信息
Mar 10 #Python
You might like
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
JsChart组件使用详解
2018/03/04 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
Nodejs 微信小程序消息推送的实现
2021/01/20 NodeJs
vue实现验证用户名是否可用
2021/01/20 Vue.js
python网络编程之读取网站根目录实例
2014/09/30 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
python脚本和网页有何区别
2020/07/02 Python
工地门卫岗位职责
2013/12/30 职场文书
党的群众路线学习材料
2014/05/16 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
2014年统计工作总结
2014/11/21 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android