from numpy import exp,array,random,dot
#import randomclass NeuralNetwork(object):def __init__(self):#指定随机数发生器种子,保证每次获得相同结果的随机数random.seed(1)#对含有3输入1输出的单个神经元建模#即3*1矩阵赋予随机权重值,范围(-1,1)#即(a,b)范围的c*d矩阵随机数为(b-a)*random.random((c,d))+aself.dendritic_weights=2*random.random((3,1))-1#sigmoid函数,s型曲线,用于对输入的加权总和x做(0,1)正规化#它可以将一个实数映射到(0,1)空间def __sigmoid(self,x):return 1/(1+exp(-x))#sigmoid函数的导数#这里的x是指__sigmoid函数的输出def __sigmoid_derivative(self,x):return x*(1-x)#训练该神经网络,并调整树突的权重def train(self,training_inputs,training_output,number_of_training_iteration):'''training_inputs:训练集的样本输入training_outputs:训练集样本的输出number_of_training_iteration:训练次数1.我们使用sigmoid曲线计算(输入的加权和映射到0至1之间)作为输出神经元2.如果输出是一个大的正(或负)数,这意味着神经元采用这种(或另一种)方式3.从sigmoid曲线可以看出,在较大值处,sigmoid曲线的斜率小,即认为当前权重是正确4.所以,乘以sigmoid函数曲线斜率可以进行调整'''for _iteration in range(number_of_training_iteration):#训练集导入神经网络output=self.think(training_inputs)#计算误差error=training_output-output#将误差乘以输入,再乘以s型曲线的梯度adjustment=dot(training_inputs.T,error*self.__sigmoid_derivative(output))self.dendritic_weights+=adjustment#神经网络def think(self,inputs):#输入与权重相乘并正交化return self.__sigmoid(dot(inputs,self.dendritic_weights))if __name__=='__main__':#初始化神经网络nn=NeuralNetwork()#初始化权重print("初始树突权重:\n{}".format(nn.dendritic_weights))#训练集,四个样本,每个样本有3个输入,1个输出#训练样本输入training_inputs_sample=array([[0,0,1],[1,1,1],[1,0,1],[0,1,1]])#训练样本的输出training_outputs_sample=array([[0,1,1,0]]).T#用训练集训练nn,重复十万次,每次做微小的调整nn.train(training_inputs_sample,training_outputs_sample,100000)#训练后的树突权重print("训练后树突权重:\n{}".format(nn.dendritic_weights))#用新数据进行测试test_result=nn.think(array([1,0,0]))print("测试结果:\n{}".format(test_result))

程序运行结果:

初始树突权重:
[[-0.16595599][ 0.44064899][-0.99977125]]
训练后树突权重:
[[12.00870061][-0.2044116 ][-5.8002822 ]]
测试结果:
[0.99999391]

参考资料:python尝试自己写一个简单的神经网络

使用python自己搭建一个简单的BP神经网络相关推荐

  1. MATLAB从入门到精通:搭建一个 简单的Bp神经网络(附代码)

    01 | 构建数据集 构造一个1行1000列的一维矩阵,这1000个数全部都在(0,1)这个区间内.规定当某一列的数字大于等于0.5时,输出为1,否则输出-1.构造数据集的代码如下. %% 构造数据集 ...

  2. 一个简单的BP神经网络例子

    原创文章,转载请说明来自<老饼讲解神经网络>:bp.bbbdata.com 关于<老饼讲解神经网络>: 本网结构化讲解神经网络的知识,原理和代码. 重现matlab神经网络工具 ...

  3. 一个简单的BP神经网络matlab程序(附函数详解)

    说明:20180604更新 1.此文的程序来自博客:http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html 2.本人对其中涉及到的函数 ...

  4. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  5. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  6. python代理池_用Python搭建一个简单的代理池

    其实每次爬东西的时候,特怕IP被封,所以每次都要把时间延迟设置得长一点...这次用Python搭建一个简单的代理池.获取代理IP,然后验证其有效性.不过结果好像不是很理想,为什么西刺代理的高匿代理都能 ...

  7. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

    在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...

  8. 使用 Python 的 flask 架构搭建一个简单web网站

    使用 Python 的 flask 架构搭建一个简单web网站 1.flask最简单框架,返回hello world: from flask import * app = Flask(__name__ ...

  9. Python后端---使用Django+Mysql搭建一个简单的网站

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.项目搭建 前期准备 命令行创建项目和app Django项目配置文件说明 使用数据库 编写业务逻辑 配置url主路 ...

最新文章

  1. RDKit | 基于Murcko骨架聚类化合物库
  2. 全国成人计算机考试题,成人计算机考试试题.docx
  3. python 配置文件编码问题
  4. 每日一皮:程序员最讨厌的四件事!
  5. python 拓扑排序 dfs bfs_拓扑排序的DFS和BFS
  6. 【机器学习】机器学习模型解释神器:Shapash
  7. wordpress程序安装php多少,2020最新WordPress网站程序详细安装教程
  8. 【web前端优化】前端无优化,庸人自扰之!
  9. python删除字符串中重复字符_从Python中删除字符串标点符号的最佳方法
  10. 随想录(驱动开发程序员需要的一些技能)
  11. 102 二叉树层序遍历Binary Tree Level Order Traversal @ Python
  12. 张钹院士:清华大学AI研究院要孵化人工智能界的BAT
  13. 无线局域网怎么设置,更加安全?
  14. [毕业生的商业软件开发之路]现代商业软件开发概况
  15. 入行大数据,需要学习哪些编程语言?
  16. W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:http://mirrors.ustc.edu.cn/kali kali-rolling
  17. pip离线安装第三方包
  18. 6n137光耦怎么测好坏_光电耦合器怎么测
  19. 听说要发年终奖了,来来来,我们父相伤害
  20. 为什么我连接到Wi-Fi但不能连接到Internet?

热门文章

  1. [Echarts可视化] 二.php和ajax连接数据库实现动态数据可视化
  2. iOS之仿QQ点赞按钮粒子效果的实现
  3. 盖茨发文谈如何实现零碳目标 称看好电动车未来
  4. 2016\Province_C_C++_C\1 报纸页数
  5. 数据结构——树与二叉树
  6. 【Linux】一步一步学Linux——export命令(211)
  7. 【Linux系统编程应用】 V4L2编程基础(一)
  8. python列表求平均值_python与统计概率思维
  9. python假设检验平均_Python|Excel|SPSS|R|Stata|Eviews统计数据假设检验T|F|卡方检验
  10. 穿梭框的list集合 去重