1 回答

TA貢獻1851條經(jīng)驗 獲得超3個贊
錯誤說明了一切:
variableGrads(f) 中傳入的 f 必須是一個函數(shù)
optimizer.minimize期望函數(shù)作為參數(shù)而不是張量。由于代碼試圖最小化 meanSquaredError,the argumentofminimize可以是一個計算預(yù)測值和預(yù)期值之間的 meanSquaredError 的函數(shù)。
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
這是什么意思 ?使用優(yōu)化器時,它期望作為參數(shù)傳遞給的函數(shù)包含變量,這些變量的值將更新為minimize函數(shù)輸出。
以下是要進行的更改:
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))
}
添加回答
舉報