二阶求导的outer_grads这句为什么要这么写?

来源:3-11 tf.GradientTape基本使用方法

金紫光禄

2019-07-15

二阶求导的outer_grads这句为什么要这么写?

outer_grads = [outer_tape.gradient(inner_grad,[x1,x2]) for inner_grad in inner_grads]

能不能写成

outer_grads = [outer_tape.gradient(inner_grads,[x1,x2])]

图片描述

实际结果有些不同,这是为什么?

写回答

1回答

正十七

2019-07-25

如果inner_grads作为数组传给tape.gradient, 那么gradient会把inner_grads当成一个目标函数,然后把给两个目标算出来的梯度相加。图中第二个结果6和20,就是第一个结果的每行的加和。

https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/GradientTape#gradient

参考API文档,输出会跟sources也就是例子中的[x1, x2]有一样的size

2
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程