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 07 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
Python搜索引擎实现原理和方法
Nov 27 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
Python内置random模块生成随机数的方法
May 31 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
使用python动态生成波形曲线的实现
Dec 04 Python
Python中包的用法及安装
Feb 11 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 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桌面中心(三) 修改数据库
2007/03/11 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
PHP实现验证码校验功能
2017/11/16 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
Python解析json文件相关知识学习
2016/03/01 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python实现画一颗树和一片森林
2018/06/25 Python
flask框架视图函数用法示例
2018/07/19 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
python算法题 链表反转详解
2019/07/02 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
小兵张嘎观后感
2015/06/03 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers