就我而言,我将 CNN 层模型分为两部分。在进行反向传播时,我计算了第二个子模型的 dLoss/dOutput。对于第一个子模型,我想计算 dOutput/dWeight,但失败了。这是我的代码:
const f = (input, weight) => tf.tidy(() => {
return model.predict(input); // return type: tf.Tensor
});
let weight = model.getWeights();
const g = tf.valueAndGrads(f);
let {value, grad} = g([x].concat(weight));
梯度结果为undefined
。我知道 tf.variableGrads()
可以通过损失函数计算模型梯度。但是损失函数必须返回一个不适合我的函数的标量。还有什么可以帮助的吗?