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 相关文章推荐
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
浅析Python中的for 循环
Jun 09 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
python解析含有重复key的json方法
Jan 22 Python
numpy下的flatten()函数用法详解
May 27 Python
python递归法实现简易连连看小游戏
Mar 25 Python
Django框架视图介绍与使用详解
Jul 18 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
Python 循环读取数据内存不足的解决方案
May 25 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横向重复区域显示二法
2008/09/25 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
javascript-TreeView父子联动效果保持节点状态一致
2007/08/12 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Django组件content-type使用方法详解
2019/07/19 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
介绍Java的内部类
2012/10/27 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
资金申请报告范文
2015/05/14 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers