美文网首页
反向传播运算可以用正向运算取代

反向传播运算可以用正向运算取代

作者: withism | 来源:发表于2018-01-21 02:23 被阅读30次

神经网络的实现中,由于用到反向传播,于是反向运算就成了很关键的一步。

由于普通计算机语言中运算是单向的,所以任何一个深度学习框架都要实现反向的运算过程,这无疑增加了实现的的复杂度。另外求导运算的每一个公式都要重新编写,无疑给开发人员造成了巨大的工作量。

鉴于神经网络更新过程中的梯度往往需要乘上一个参数以防止过耦合,于是梯度的运算可以采用较为粗糙的方法。

也就是将输入按照一定的规则加上一个小的数值,然后计算梯度,将输入数据的梯度与输出数据的梯度求商,就可以得到正确的梯度方向(正值或者负值)。

这样处理过后,只需要一点点小的技巧,就可以复用所有现有的数值、矩阵运算单向类库,而不需要从底层开始全盘代码重构了。

双向运算的实现是深度学习框架的关键,但用单向来模拟双向,也不失为一种办法。

data(){

value,

grad,

updateFactor

}

dataC.value=dataA.value*dataB.value+1

dataA.grad=((data.value+dataA.grad*dataA.updateFactor)*dataB+1-dataC.value)/dataA.grad

data.update()=data.value-data.grad*data.updateFactor

相关文章

  • 反向传播运算可以用正向运算取代

    神经网络的实现中,由于用到反向传播,于是反向运算就成了很关键的一步。 由于普通计算机语言中运算是单向的,所以任何一...

  • 深度学习中的逆卷积

    知乎@张萌 逆卷积相对于卷积在神经网络结构的正向和反向传播中做相反的运算。逆卷积(Deconvolution)比较...

  • Lat Long格式转换

    反向运算

  • 神经网络

    神经网络的正向&&反向传播 通过正向传播后得到的误差来进行反向传播,反向传播时通过求导的方式更新权值,获得误差更小...

  • Python数据类型_字符串类型

    字符串类型的常用操作 按索引取值(正向取+反向取):只能取 长度len 成员运算 in 和 not in 不是所有...

  • Python运算符重载

    Python运算符重载 一、模拟数字类型运算重载 1.算术运算 2.比较运算 示例: 二、反向操作与就地操作 1....

  • javase part2 - 运算符和三大结构

    数学运算符 : + , - , * , /, % ,可以用于数学运算 自增自减运算符 : ++ , -- 技巧...

  • js 加号运算符使用 2021-03-26

    js中加号+ 运算符可以用在一元运算 与 二元运算1, 一元运算请况 语法:+ Expression +'号运算符...

  • 我的数据科学之路-用pytorch做深度学习

    上一篇文章介绍了深度学习的基本原理,核心过程就是正向传播与反向传播,正向传播由输入到输出,完成一次预测,反向传...

  • JS中的位移运算

    快速理解位运算: 位运算比其他运算(加减乘除)更加底层,所以运算的更快,但是不是所有场景都可以用 位运算只针对整数...

网友评论

      本文标题:反向传播运算可以用正向运算取代

      本文链接:https://www.haomeiwen.com/subject/cmnxaxtx.html