注释为当前行的注释或者是下一行的注释。

import numpy as np#科学计算的基础包# 定义sigmoid函数及其求导,deriv=False时进行前向传播的运算,deriv=True进行反向传播的运算
# 即当derive为假时,不计算导数,反之计算,控制传播方向。
def sigmoid(x, deriv=False):if (deriv == True):# 求导return x * (1 - x)#这里x=1/(1+exp(-x)),是sigmoid函数求导后的结果根据前向传播,x=sigmoid(x),求导需要(sigmoid(x)',e,而这里的return语句中的x替换为sigmoid(x)与求导等价return 1 / (1 + np.exp(-x)) #前向传播#输入4个样本,每个样本三个特征值
X = np.array([[0, 0, 1],[0, 1, 1],[1, 0, 1],[1, 1, 1]])
print(X.shape)#每一行对应的类用0,1表示
y = np.array([[0, 1, 1, 0]]).T
print(y.shape)# 初始化权重weight01的维数与样本特征与神经元的个数有关,random初始化的值在(0,1)的半开区间内,乘2减1后控制w0的值在(-1.+1)区间上
weight01 = 2 * np.random.random((3, 4)) - 1#生成生成3行 4列的随机浮点数,w01左边连3个特征,右边连4个神经元,浮点数范围:(0,1)
weight12 = 2 * np.random.random((4, 2)) - 1#生成生成4行 2列的随机浮点数,w12左边连4个神经元,右边连2个神经元,浮点数范围:(0,1)
weight23 = 2 * np.random.random((2, 1)) - 1#生成生成2行 1列的随机浮点数,w23左边连两个神经元,右边连一个输出值,浮点数范围:(0,1)# 初始化偏倚
b1 = 2 * np.random.random((1, 4)) - 1#第一个隐层四个神经元
b2 = 2 * np.random.random((1, 2)) - 1#第二个隐层两个神经元
b3 = 2 * np.random.random((1, 1)) - 1#输出层一个神经元
bias1 = np.array([b1[0], b1[0], b1[0], b1[0]])#array是数组函数
print(bias1)
bias2 = np.array([b2[0], b2[0], b2[0], b2[0]])
bias3 = np.array([b3[0], b3[0], b3[0], b3[0]])# 开始训练
for j in range(60000):#迭代六万次I0 = X#将x的值给l0,l0为输入层O0 = I0#4行3列I1 = np.dot(O0, weight01) + bias1# 默认False,是进行前向传播O1 = sigmoid(I1)#中间层经过第一层后的值,4行4列I2 = np.dot(O1, weight12) + bias2# 默认False,是进行前向传播O2 = sigmoid(I2)#中间层经过第二层后的值,4行2列I3 = np.dot(O2, weight23) + bias3# 默认False,是进行前向传播O3 = sigmoid(I3) #输出层的值,4行1列f3_error = y - O3#输出层的值与期望的值的差异if (j % 10000) == 0:print("Error:" + str(np.mean(f3_error)))#每经过一万次迭代输出一次差异值的平均值,以便观察差异值是否减小f3_delta = f3_error * sigmoid(O3, deriv=True)#w23对错误的贡献,反向传播,误差作为一个权重,误差越大权重越大#print(f3_delta.shape),(4行1列)f2_error = f3_delta.dot(weight23.T)#反向传播根据f3_delta得出,矩阵f3_delta乘w23的转置f2_delta = f2_error * sigmoid(O2, deriv=True)#w12对错误的贡献,反向传播,误差作为一个权重,误差越大权重越大#print(f2_delta.shape),(4行2列)f1_error = f2_delta.dot(weight12.T)#反向传播根据f2_delta得出,矩阵f2_delta乘w12的转置f1_delta = f1_error * sigmoid(O1, deriv=True)#w01对错误的贡献,反向传播,误差作为一个权重,误差越大权重越大#print(f1_delta.shape),(4行4列)weight23 += O2.T.dot(f3_delta)# 调整权重,根据反馈过来的结果对w23进行调节 , 因为从后往前,所以先更新w23weight12 += O1.T.dot(f2_delta)# 调整权重,根据反馈过来的结果对w12进行调节weight01 += O0.T.dot(f1_delta)# 调整权重,根据反馈过来的结果对w01进行调节bias3 += f3_delta  # 调整偏倚bias2 += f2_deltabias1 += f1_deltaprint("outout after Training:")
print(O3)

BP神经网络python代码实现#超详细-小白快速入门相关推荐

  1. BP神经网络python代码详细解答(来自原文翻译)

    翻译如下 ** <font color=black size=6.5> 在 SCRATCH采用python 上实现一种神经网络 **         注: Scratch是一款由麻省理工学 ...

  2. 400 多行代码!超详细 Rasa 中文聊天机器人开发指南 | 原力计划

    作者 | 无名之辈FTER 责编 | 夕颜 出品 | 程序人生(ID:coder_life) 本文翻译自Rasa官方文档,并融合了自己的理解和项目实战,同时对文档中涉及到的技术点进行了一定程度的扩展, ...

  3. 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 本篇博客将会给 ...

  4. win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)

    win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细) (一)前言 (二)准备工作 (三)友情提醒 (四)详细安装步骤 1.新建文件夹 2.下载OpenPo ...

  5. 归并排序(代码注释超详细)

    归并排序: (复制粘贴百度百科没什么意思),简单来说,就是对数组进行分组,然后分组进行排序,排序完最后再整合起来排序! 我看了很多博客,都是写的8个数据呀什么的(2^4,分组方便),我就想着,要是10 ...

  6. gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码

    智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 文章目录智能优化算法应用:基于GWO优 ...

  7. Github上传代码菜鸟超详细教程

    最近需要将课设代码上传到Github上,之前只是用来fork别人的代码. 这篇文章写得是windows下的使用方法. 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选), ...

  8. python大神和小白代码_看大神6行代码如何带领小白快速入门Python爬虫?

    原标题:看大神6行代码如何带领小白快速入门Python爬虫? 可能是小编本身就有一定的基础!当然我没有瞧不起小白的看法,知识觉得要入门一门编程语言确实比较简单,而且小编本身也是从小白过来的,但是当初接 ...

  9. BP神经网络python实现

    BP神经网络python实现 总体布局 函数 构建网络 前馈的一个过程 更新 w , b w,b w,b 进行测试 数据读取 m a i n main main函数 数据集 总体布局 函数 S i g ...

最新文章

  1. java导出为excel文件_java导出数据到excel文件
  2. Python3远程监控程序实现
  3. python opencv Intel Realsense 使用滑动条调整图片的曝光率
  4. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
  5. 第七十六期:3000台服务器不宕机,微博广告系统全景运维大法
  6. 简单英文题 24 Divisor and Multiple(python)
  7. 关于HTML Button点击自动刷新页面的问题解决
  8. android自定义透明圆形,Android progressdialog自定义背景透明的圆形进度条类似于Dialog...
  9. 基于PHP的旅游网站的设计与实现论文
  10. c语言定时器中断实验报告,单片机实验报告-定时器中断实验.doc
  11. ROBOMASTER机甲大师赛视觉组学习方案
  12. 混沌加密的理解及应用,附代码
  13. 邓应海:3.24最新黄金走势分析,黄金多空操作建议
  14. 关于SQL_Errno1677导致主从复制中断处理
  15. SpringBoot启动流程简要
  16. 推荐一款类似微软visio的免费软件
  17. K-Means算法实现网页聚类
  18. 豆芽儿 - 高端IT人才成长社区 上线啦!
  19. SQL Server连接其他服务器
  20. NOJ1149 旅游预算(动态规划)

热门文章

  1. 小项目:单片机可控硅调光设计带光耦过零检测 元器件清单 源代码原理图等
  2. 【渝粤教育】21秋期末考试中国法律史10212k1
  3. 计算机网络应用答题卡,网上阅卷系统中答题卡模板自动生成技术研究
  4. 质量管理数字化(QMS系统)该如何开展
  5. floodfill算法
  6. 图像处理学习之图像增强
  7. Let‘s Encrypt 泛域名通用证书申请
  8. 广东南方电网考试经典试题
  9. 浅谈母线配电在数据中心的应用以及产品监控选型
  10. 华为手机安装apk提示该应用已感染病毒,ESET-NOD32病毒