# -*- coding: utf-8 -*-
"""
Created on Wed Mar 16 23:46:31 2022@author: liaoy
"""import numpy as np
import matplotlib.pyplot as plt
import pandas as pddef sigmoid(x):"""隐含层和输出层对应的函数法则
"""return 1/(1+np.exp(-x))def BP(data_tr, data_te, maxiter=3000):# --pandas是基于numpy设计的,效率略低# 为提高处理效率,转换为数组data_tr, data_te = np.array(data_tr), np.array(data_te)# --隐层输入# -1: 代表的是隐层的阈值net_in = np.array([0.0, 0, -1])w_mid = np.random.rand(3, 4)          # 隐层权值阈值(-1x其中一个值:阈值)# 输出层输入# -1:代表输出层阈值out_in = np.array([0.0, 0, 0, 0, -1])w_out = np.random.rand(5)             # 输出层权值阈值(-1x其中一个值:阈值)delta_w_out = np.zeros([5])           # 存放输出层权值阈值的逆向计算误差delta_w_mid = np.zeros([3, 4])        # 存放因此能权值阈值的逆向计算误差yita = 1.75                           # η: 学习速率Err = np.zeros([maxiter])             # 记录总体样本每迭代一次的错误率# 1.样本总体训练的次数for it in range(maxiter):# 衡量每一个样本的误差err = np.zeros([len(data_tr)])# 2.训练集训练一遍for j in range(len(data_tr)):net_in[:2] = data_tr[j, :2]                       # 存储当前对象前两个属性值real = data_tr[j, 2]# 3.当前对象进行训练for i in range(4):out_in[i] = sigmoid(sum(net_in*w_mid[:, i]))  # 计算输出层输入res = sigmoid(sum(out_in * w_out))                # 获得训练结果err[j] = abs(real - res)# --先调节输出层的权值与阈值delta_w_out = yita*res*(1-res)*(real-res)*out_in  # 权值调整delta_w_out[4] = -yita*res*(1-res)*(real-res)     # 阈值调整w_out = w_out + delta_w_out# --隐层权值和阈值的调节for i in range(4):# 权值调整delta_w_mid[:, i] = yita * out_in[i] * (1 - out_in[i]) * w_out[i] * res * (1 - res) * (real - res) * net_in# 阈值调整delta_w_mid[2, i] = -yita * out_in[i] * (1 - out_in[i]) * w_out[i] * res * (1 - res) * (real - res)w_mid = w_mid + delta_w_midErr[it] = err.mean()plt.plot(Err)plt.show()# 存储预测误差err_te = np.zeros([100])# 预测样本100个for j in range(100):net_in[:2] = data_te[j, :2]                         # 存储数据real = data_te[j, 2]                                # 真实结果# net_in和w_mid的相乘过程for i in range(4):# 输入层到隐层的传输过程out_in[i] = sigmoid(sum(net_in*w_mid[:, i]))res = sigmoid(sum(out_in*w_out))                    # 网络预测结果输出err_te[j] = abs(real-res)                           # 预测误差print('rest:', rest, ' real:', real)plt.plot(err_te)plt.show()if "__main__" == __name__:# 1.读取样本data_tr = pd.read_csv("D:\\spyder\\12.CUI\\3.3 data_te(1).txt")data_te = pd.read_csv("D:\\spyder\\12.CUI\\3.3 data_tr(1).txt")BP(data_tr, data_te, maxiter=3000)

如上为BP神经网络代码,先定义sigmoid和他的导数。后代码如上图所示,我设置的代码运行次数为3000次,运算的过程如下图,但只有运行到100的图像

该数据和代码还有优化空间。

BP神经网络python的实现相关推荐

  1. BP神经网络python实现

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

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

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

  3. BP神经网络python简单实现

    BP神经网络的原理在网上有很详细的说明,这里就不打算细说,这篇文章主要简单的方式设计及实现BP神经网络,并简单测试下在恒等计算(编码)作测试. BP神经网络模型图如下 BP神经网络基本思想 BP神经网 ...

  4. BP神经网络 python实现

    原理部分 BP神经网络(算法整体思路及原理+手写公式推导)_秃头小苏的博客-CSDN博客_bp神经网络算法流程图 非常感谢这位博主 import timeimport numpy as np from ...

  5. BP神经网络python代码实现#超详细-小白快速入门

    注释为当前行的注释或者是下一行的注释. import numpy as np#科学计算的基础包# 定义sigmoid函数及其求导,deriv=False时进行前向传播的运算,deriv=True进行反 ...

  6. 深度学习(神经网络) —— BP神经网络原理推导及python实现

    深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...

  7. bp神经网络预测python代码_机器学习之多层神经网络(附Python代码和数据)

    1 引言 多层神经网络,Multiple-layers Perceptron (MLP),又被称为多层感知机,是机器学习中深度学习的典型算法.关于多层神经网络的算法原理,我们在Stata和R实现的文章 ...

  8. 【图像处理】——Python实现图像特征提取BP神经网络实现图像二分类

    目录 一.图像特征提取 二.BP实现图像二分类 1.输入层.隐层.输出层结点个数设置 (1)one hot码(假设是n分类问题) (2)一个输出,输出层结点为1 一.图像特征提取 图像具有灰度特征.G ...

  9. 基于sympy的python实现三层BP神经网络算法

    #!/usr/bin/python # -*- coding: utf-8 -*- """ 写一个三层的BP神经网络(3,2,1),3是输入数据的维度,隐层设置节点数为2 ...

  10. 三层BP神经网络的python实现

    这是一个非常漂亮的三层反向传播神经网络的python实现,下一步我准备试着将其修改为多层BP神经网络. 下面是运行演示函数的截图,你会发现预测的结果很惊人! 提示:运行演示函数的时候,可以尝试改变隐藏 ...

最新文章

  1. Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】
  2. Asp.net面试题之一
  3. nodejs中的全局函数setTimeout/clearTimeout,setInterval/clearInterval,unref/ref
  4. 简单shell 学习
  5. DDD:DomainEvent、ApplicationEvent、Command
  6. python执行过程打印,如何在pytest运行过程中看到正常的打印输出?
  7. Java调用动态库 缺点_java调用动态库(dll)的一些问题
  8. 2018年1月19日 第七次小组会议
  9. 【月薪三万】听说深圳老师工资全国最高!!!比德国还高
  10. 【5月8 】NVIDIA 迁移学习工具包(TLT)最佳实践
  11. Java爬虫入门详解(Selenium)
  12. Java Deque
  13. matlab怎么定义矩阵变量_MATLAB符号计算(收藏版)
  14. 泛泛而谈的渲染学习记录(一)—— 描边中的轮廓边缘
  15. 支付宝17年新春红包技术体系剖析
  16. vscode中terminal不支持workon激活虚拟环境?试试修改默认shell
  17. 学习Qt使用GDI+绘图笔记
  18. 多线程发生异常怎么处理咩?
  19. c语言线段树建树程序,C++算法 线段树
  20. Java实现抢红包程序

热门文章

  1. Appium连接教程
  2. html如何将设置文本效果,Word2013中通过设置文本效果格式来为文字添加特殊效果...
  3. 一键导出微信读书的书籍和笔记
  4. python2.7中文手册下载_python 2.7.12中文文档下载|
  5. IDEA格式化代码的快捷键是什么
  6. 易语言输入框参数和调用
  7. 华为盒子EC6110-T-通刷-免拆刷机固件及教程
  8. html在线比对工具,在线文本对比工具(mergely示例)
  9. Arduino ISP下载接口
  10. java 偏向锁的作用_java--偏向锁