1、 问题描述及实验要求


(1)写出包含单隐层的正向和反向推倒过程
(2)画出网络结构图
(3)完成算法代码(要求体现推倒过程,也可采用tensorflow完成)
(4)画出误差随迭代次数变化曲线、测试数据图
(5)尝试不同激活函数和隐含层神经元数目,研究其对精度的影响并分析

2、 推导过程




3、 网络结构图

4、 算法代码

import numpy as np
import matplotlib.pyplot as plt
import random
from pylab import *mpl.rcParams['font.sans-serif'] = ['SimHei']x = np.linspace(1, np.pi / 2, 10)
y = 2 * np.sin(x) - 0.7
x_test = np.random.random(10) * (np.pi / 2 - 1) + 1
y_test = 2 * np.sin(x_test) - 0.7
plt.scatter(x, y, marker='o')
plt.scatter(x_test, y_test, marker='+')
plt.title('训练集:红点,测试集:加号')
plt.show()hide = 10  # 隐藏层神经元个数
W1 = np.random.random((hide, 1))  # 权重
B1 = np.random.random((hide, 1))   # 偏置
W2 = np.random.random((1, hide))
B2 = np.random.random((1, 1))
learningrate = 0.005 # 学习率
iteration = 10000  # 迭代次数def sigmoid(x):return 1 / (1 + np.exp(-x))E = np.zeros((iteration, 1))  # 存放误差
Y = np.zeros((10, 1))  # 存放训练结果
for k in range(iteration):temp = 0for i in range(10):hide_in = np.dot(x[i], W1) - B1hide_out = np.zeros((hide, 1))for j in range(hide):hide_out[j] = sigmoid(hide_in[j])y_out = np.dot(W2, hide_out) - B2Y[i] = y_oute = y_out - y[i]dB2 = -1 * learningrate * edW2 = e * learningrate * np.transpose(hide_out)dB1 = np.zeros((hide, 1))for j in range(hide):dB1[j] = np.dot(np.dot(W2[0][j], sigmoid(hide_in[j])), (1 - sigmoid(hide_in[j])) * (-1) * e * learningrate)dW1 = np.zeros((hide, 1))for j in range(hide):dW1[j] = np.dot(np.dot(W2[0][j], sigmoid(hide_in[j])), (1 - sigmoid(hide_in[j])) * x[i] * e * learningrate)W1 = W1 - dW1B1 = B1 - dB1W2 = W2 - dW2B2 = B2 - dB2temp = temp + abs(e)E[k] = temp
plt.scatter(x, y, c='r')
plt.plot(x, Y)
plt.title('训练集:红点,训练结果:蓝线')
plt.show()plt.scatter(x_test, y_test, c='y', marker='+')
plt.plot(x, Y)
plt.title('测试集:加号,训练结果:蓝线')
plt.show()xx = np.linspace(0, iteration, iteration)
plt.plot(xx, E)
plt.title('训练误差随迭代次数趋势图')

5、 实验结果

实验结果截图:

图1-散点图观察训练集与测试集

图2-训练集与训练结果

图3-测试集与训练结果

图4-误差分析

6、 算法分析

不同激活函数对实验结果的影响误差不大,但是随着隐含神经元数目、迭代次数的增加,实验结果会越来越准确,越趋近于函数。

AI 利用BP算法及Sigmoid函数,研究函数f(x)=2sinx-0.7的逼近问题-实验报告相关推荐

  1. BP算法双向传_链式求导最缠绵(深度学习入门系列之八)

    摘要: 说到BP(Back Propagation)算法,人们通常强调的是反向传播,其实它是一个双向算法:正向传播输入信号,反向传播误差信息.接下来,你将看到的,可能是史上最为通俗易懂的BP图文讲解, ...

  2. BP算法双向传,链式求导最缠绵(深度学习入门系列之八)

    摘要: 说到BP(Back Propagation)算法,人们通常强调的是反向传播,其实它是一个双向算法:正向传播输入信号,反向传播误差信息.接下来,你将看到的,可能是史上最为通俗易懂的BP图文讲解, ...

  3. 【深度学习之美】BP算法双向传,链式求导最缠绵(入门系列之八)

    8.1 BP神经网络极简史 在神经网络(甚至深度学习)参数训练中,BP(Back Propagation)算法非常重要,它都占据举足轻重的地位.在提及BP算法时,我们常将它与杰弗里•辛顿(Geoffr ...

  4. 从神经网络到BP算法(纯理论推导)

    作者述:之前有学习过一遍,但是一段时间过后,很多细节地方已经模糊.最近重新推导了一遍,为了尽可能保留推导思路,特地写作此博文.一方面供自己日后回忆,另一方面方便跟大家交流学习. 关于本博文,说明如下: ...

  5. BP算法的matlab代码学习

    声明:文中的两个案例matlab源码引用自网络,并非本人所写,在此感谢原作者.原链接http://wenku.baidu.com/view/d8df1821aaea998fcc220e03.html? ...

  6. 【华为云技术分享】深度理解AI概念、算法及如何进行AI项目开发

    莫衷一是的AI 做了多年的业务工作,一直希望能够用机器代替人力,把人从繁琐的具体工作中解放出来,从技术发展看AI或许可以支撑实现这个愿景. 但最近关于AI的讨论和争论比较多,学术上,纽约大学的Gary ...

  7. RBF神经网络python实践学习(BP算法)

    续上一篇:RBF神经网络学习及实践 RBF神经网络求解方法 RBF网络中需要求解的参数为:径向基函数的中心.方差和隐层到输出层的权值. 对于基函数中心的选取方法主要有:随机选取.聚类选取.有监督学习选 ...

  8. 反向传播算法原理(BP算法)(直观易懂)

    反向传播(Back Propagation.BP算法) 反向传播是对于神经网络来说最重要的算法 反向传播是求偏导的过程 反向传播的核心是计算图(如下图所示) a和b:输入量/权重,可经一系列运算得到e ...

  9. 数据结构与算法 第二次实验报告堆栈队列

          数据结构与算法 第二次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1 中国石油大学(北京)计算机科学与技术系 前     言 <数据结构>是计算机及相关 ...

最新文章

  1. hp unix oracle rac节点一磁盘损坏,节点修复
  2. 华南理工计算机考试题,华南理工考研计算机历年真题
  3. 自定义注解和拦截器,实现接口限流防刷
  4. 在Safari里也能像Chrome里一样,通过执行js修改变量的值,在debugger里立即生效
  5. 计算器软件设计和计算机软件设计区别,求一个模拟计算器程序
  6. redis怎么修改_面试官问我Redis事务,还问我有哪些实现方式
  7. hbase 操作指令集合
  8. 「洛谷P1231」教辅的组成 解题报告
  9. (十一)洞悉linux下的Netfilteriptables:iptables命令行工具源码解析【上】
  10. java 不变类_Immutable-不变模式与不变类-一版
  11. paddle 图标注_SPC控制图应用步骤
  12. 元胞自动机在交通系统中的应用之二【单车道NaSch元胞自动机模型】
  13. maven 启动项目默认tomcat6更换为tomcat7或其他版本
  14. 【强烈建议收藏保存】70多个免费实用工具,数字激活、数据恢复、配置检测......
  15. C语言——函数定义及用法【内部函数外部函数内联函数】
  16. Python基础刷题,期末不挂科~~~(已完结)
  17. 2021-06-08
  18. Python:正则表达式 flags 参数
  19. mysql 联合索引 abc_ABC联合索引生效问题(整理笔记!!!)
  20. 来自首次Ray聚会的记录

热门文章

  1. html中利用table进行布局
  2. 【论文解读】MV3D-Net、AVOD-Ne用于自动驾驶的多视图3D目标检测网络
  3. Genome Biology | 基于RNA-seq的孟德尔疾病变异分析
  4. Open Drug Discovery Toolkit
  5. 微信小程序setinterval_微信小程序中setInterval的使用方法
  6. eclipse可以写前端吗_Python 竟然也可以写网页前端了!
  7. R 语言柱状图示例笔记
  8. R语言绘制二维密度图
  9. 从复旦博士生到985高校副教授,贫穷使人深知摆脱自卑的艰难
  10. iMeta期刊顾问James M Tiedje当选中国科学院外籍院士