使用gradients对多个式子求多变量偏导

一 实例描述
两个OP,4个参数,演示使用gradients同时为两个式子4个参数求梯度。
二 代码
import tensorflow as tf
tf.reset_default_graph()
w1 = tf.get_variable('w1', shape=[2])
w2 = tf.get_variable('w2', shape=[2])
w3 = tf.get_variable('w3', shape=[2])
w4 = tf.get_variable('w4', shape=[2])
y1 = w1 + w2+ w3
y2 = w3 + w4

gradients = tf.gradients([y1, y2], [w1, w2, w3, w4], grad_ys=[tf.convert_to_tensor([1.,2.]),
                                                          tf.convert_to_tensor([3.,4.])])
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(gradients))
三 运行结果
[array([ 1.,  2.], dtype=float32), array([ 1.,  2.], dtype=float32), array([ 4.,  6.], dtype=float32), array([ 3.,  4.], dtype=float32)]
四 结果说明
gradients中的第三个参数,即给定公式结果的值,来求参数偏导,这里相当于y1为[1,2],y2为[3,4]。对于y1来讲,求关于w1的偏导时,会认为w2和w3为常数,所有w2和w3的导数为0,即w1的梯度就为[1,2]。同理可以得出w2和w3均为[1,2],接着求y2的偏导数,得到w3与w4均为[3,4],然后将两个式子中的w3结果累加起来,所以w3就为[4,6]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值