热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

有无激活函数训练bp的区别

对于bp神经网络有无激活函数训练,本文使用sigmod函数。对于有sigmoid的bp神经网络,由于sigmod函数理论上讲可将线性相加的组合映射到(0,1)的区间,在一定程度上可

对于bp神经网络有无激活函数训练,本文使用sigmod函数。

对于有sigmoid的bp神经网络,由于sigmod函数理论上讲可将线性相加的组合映射到(0,1)的区间,在一定程度上可以使得将输入进行预测并作出分类。同时,运用梯度下降来更新权重使得反向传播得到可能。

对于无sigmod函数,从理论上讲,其模型就是简单的线性相加求和,对于非线性模型进行预测毫无理论支撑性可言,并且其线性相加的数值可根据权值大小得出的结果也无限大小,其结果数值波动性也特别大,而非误差一直向数值小处进行拓展。

本文使用pycharm对两者进行模拟,对于反向传播,有sigmod函数的bp神经网络还是利用链式法则依次求偏导,无sigmod函数的bp神经网络则直接跳过对激活函数求偏导,而直接对输入函数z(z=w*x+b)求偏导。

迭代100次后观察得出:

无sigmod函数的bp神经网络,其残差数值波动性较大,可能第i+1次比第i次迭代得出的结果还要大,并可能由于偶然性因素,残差竟在第51次迭代得0。但其结果毫无理论性支撑可言。于是换了一组原始输入值,发现其得出结果误差波动性较大,其结果也无实际意义,无法解释其结果理论意义。

#有sigmod函数bp神经网络代码
import
numpy as np
import math
def nonlin(x, deriv=False):
if (deriv == True):
return x * (1 - x) #如果deriv为true,求导数
else:
return 1 / (1 + np.exp(-x))
X
= np.array([[0.35],[0.9]]) #输入层
y = np.array([[0.5]]) #输出值

np.random.seed(
1)
min
=9999
W0
= np.array([[0.1,0.8],[0.4,0.6]])
W1
= np.array([[0.3,0.9]])
print('original ',W0,'\n',W1)
print('begin time ')
for j in range(100):
l0
= X #相当于文章中x0
l1 = nonlin(np.dot(W0,l0)) #相当于文章中y1
l2 = nonlin(np.dot(W1,l1)) #相当于文章中y2
l2_error = y - l2
Error
= 1/2.0*math.pow(l2_error,2)
print('ERROR',j,':',Error)
l2_delta
= l2_error * nonlin(l2, deriv=True) #this will backpack
#print 'l2_delta=',l2_delta
l1_error = l2_delta*W1; #反向传播
l1_delta = l1_error * nonlin(l1.T, deriv=True)
W1
+= l2_delta*l1.T; #修改权值
W0 += l1_delta.dot(l0)
print(W0,'\n',W1)
print('endtime')

无sigmod函数bp神经网络代码
import
numpy as np
import math
X
= np.array([[0.35],[0.9]]) #输入层 #第二次输入值为[0.8],[0.9]
y = np.array([[0.5]]) #输出值      #第二次输入值为[0.7]

np.random.seed(
1)
min
=9999
W0
= np.array([[0.1,0.8],[0.4,0.6]])
W1
= np.array([[0.3,0.9]])
print('original ',W0,'\n',W1)
print('begin time ')
for j in range(100):
l0
= X #相当于文章中x0
l1 = np.dot(W0,l0) #相当于文章中y1
l2 = np.dot(W1,l1) #相当于文章中y2
l2_error = y - l2
Error
= 1/2.0*math.pow(l2_error,2)
print('ERROR',j,':',Error)
l1_delta
= l2_error * W1
W1
+=l2_error*l1.T
W0
+=l1_delta.dot(l0)
#print("Error:",Error)
print(W0,'\n',W1)
print('endtime')

    无sigmod函数结果

        更改输入值后结果



推荐阅读
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了在Python中使用getpass模块隐藏密码输入的方法,以保护用户的密码不被其他人员看到。同时还提到了在PyCharm中运行该命令无效的问题,需要在terminal中运行。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
  • 很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
xh7212176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有