1 回答
TA贡献1851条经验 获得超3个赞
错误说明了一切:
variableGrads(f) 中传入的 f 必须是一个函数
optimizer.minimize期望函数作为参数而不是张量。由于代码试图最小化 meanSquaredError,the argumentofminimize可以是一个计算预测值和预期值之间的 meanSquaredError 的函数。
const loss = (pred, label) => pred.sub(label).square().mean();
for (let f = 0; f < 10; f++) {
optimizer.minimize(() => tf.losses.meanSquaredError(Y, model))
}
它是否解决了问题,但还没有完全解决?错误将更改为:
variableGrads() expects at least one of the input variables to be trainable
这是什么意思 ?使用优化器时,它期望作为参数传递给的函数包含变量,这些变量的值将更新为minimize函数输出。
以下是要进行的更改:
var Y = tf.tensor([[0,0,0],[0,0,0], [1,1,1]]).variable() // a variable instead
// var loss = tf.losses.meanSquaredError(Y, model)
// computed below in the minimize function
const learningRate = 0.01;
var optimizer = tf.train.sgd(learningRate);
var model = RNN_FowardProp(X, a0, parameters);
const loss = (pred, label) => pred.sub(label).square().mean();
for (let f = 0; f < 10; f++) {
optimizer.minimize(() => tf.losses.meanSquaredError(Y, model))
}
添加回答
举报