TFJS的源码并没有对第三个参数dy进行注释。官方文档也仅仅给出了前两个参数https://js.tensorflow.org/api/latest/#grads的示例。
具体使用第三个参数的示例是:
const a = tf.scalar(5);
const b = tf.scalar(2);
const dy = tf.scalar(4);
const before = tf.memory().numTensors;
const grads = tf.grads((a, b) => tf.div(a, b));
const [da, db] = grads([a, b], dy);
console.log(await da.data());
console.log(await db.data());
输出是:
2
-5
不考虑dy的输出是:
1/2
-5/4
所以参数dy有级联导数的意思,即将所有输出的导数和dy相乘。
即没有dy的时候,输出的是:
d f d a , d f d b {df\over da }, {df\over db } dadf,dbdf
有dy的时候,输出的是:
d f d a ∗ d y , d f d b ∗ d y {df\over da }*dy, {df\over db }*dy dadf∗dy,dbdf∗dy