发新帖

Tensorflow 的 backward propagation 到底是怎么算的呀?

[复制链接]
191 7

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
听说 TF 可以自动算梯度。求大侠讲解下背后的原理是什么呀?
我知道答案 回答被采纳将会获得10 金币 已有7人回答
本楼点评(0) 收起

精彩评论7

dahua  TF荚荚  发表于 2018-4-17 11:02:30 | 显示全部楼层
“BP是逐层计算的”,这是BP可以自动计算的基础。

在Tensorflow中,每一个原子Op,都定义了梯度如何计算,只要沿着Tensorflow Graph,从后往前,逐层调用梯度函数,并套到BP的公式去计算,就可以实现自动计算。
本楼点评(0) 收起
舟3332  TF芽芽  发表于 2018-4-17 11:09:32 | 显示全部楼层
dahua 发表于 2018-4-17 11:02
“BP是逐层计算的”,这是BP可以自动计算的基础。

在Tensorflow中,每一个原子Op,都定义了梯度如何计算, ...

想问一下更具体的问题,比如我 定义了一个 add op
c = tf.add(a, b)
那么我要怎么样定义他的 gradient 呢?感觉这种偏导数很难定义呀。
本楼点评(0) 收起
心有猛虎  TF荚荚  发表于 2018-4-17 11:31:20 | 显示全部楼层
其实不难,
微积分中的链式法则
    复合函数的导数,相乘:
        z(y(x))
         dz/dx = (dz/dy)*(dy/dz)
    如果有多个中间函数,通过每个中间函数的导数加和:
        z(y1(x), y2(x))
        dz/dx = dz/dy1 * dy1/dx + dz/dy2 *dy2/dx
    如果:z是标量,y、x都是向量
        z对x的一个分量导数:dz/dxi = 对每个yi分量求和 ( dz/dyj * dyj/dxi)
        z对x的导数向量 = (y对x的jacobi矩阵的转秩)x (z对y的导数向量)
   

本楼点评(0) 收起
心有猛虎  TF荚荚  发表于 2018-4-17 11:32:48 | 显示全部楼层
《deep learning》中看到的,反向传播中的基本原理。
本楼点评(0) 收起
isly831130  TF荚荚  发表于 2018-4-17 14:51:44 | 显示全部楼层
c = tf.add(a, b) 只是運算 並沒有weights 所以不會做gradient descent
本楼点评(0) 收起
ViolinSolo  TF豆豆  发表于 2018-7-3 20:03:53 | 显示全部楼层
其实就是单个步骤然后反向传播,反正都是tf自己算得,不用关系这个细节啦
本楼点评(0) 收起
ViolinSolo  TF豆豆  发表于 2018-7-3 20:04:46 | 显示全部楼层
当然你要是真的想自己操作,可以手动写反向传播,就是个数学公式而已,同时可以调用api,指定某些可以传播某写不能传播
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表