我正在将一段工作代码从 Python 翻译成 JS。
尝试在 TensorFlow.js 中使用 Audoencoder 创建预测。
我希望它预测序列中的下一个数字。
比如说,我有 X
(当然,我过于简单了,我的实际数据更复杂):
[
[[1],[2],[3],[4],[5],[6]],
[[2],[3],[4],[5],[6],[7]],
[[3],[4],[5],[6],[7],[8]],
]
和 y
是
[
7,
8,
9,
]
模型的代码是:
const featuresNum = 1, timeSteps=6;
const neuronsNum = 64;
const model = tf.sequential();
model.add(tf.layers.lstm({units:neuronsNum, inputShape:[timeSteps, featuresNum]}));
model.add(tf.layers.dropout({rate:.1}));
model.add(tf.layers.repeatVector({n:timeSteps}));
model.add(tf.layers.lstm({units:neuronsNum, returnSequences:true}));
model.add(tf.layers.dropout({rate:.1}));
model.add(tf.layers.timeDistributed({layer:tf.layers.dense({units:featuresNum})}));
model.compile({loss:`meanAbsoluteError`, optimizer:tf.train.adam(.00001)});
但是,当我尝试执行以下操作时:
const history = await model.fit(X, y, {
epochs:3,
batchSize,
validationSplit:.1,
shuffle:false,
});
我得到一个 Error when checking target: expected time_distributed_TimeDistributed1 to have 3 dimension(s). but got array with shape 3,1
即使我将 y
更改为
[
[7],
[8],
[9],
]
我遇到了同样的错误。 好吧,如果它想要3d数组,我把它改成:
[
[[7]],
[[8]],
[[9]],
]
现在的错误是 Error when checking target: expected time_distributed_TimeDistributed1 to have shape [,6,1], but got array with shape [3,1,1].
一个有趣的事实是,在 Python 中,即使 y
是一维的,一切正常。