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))
}
添加回答
舉報