TensorFlow.js - TimeDistributed 层上的形状错误

时间:2021-05-07 13:21:46

标签: javascript python tensorflow machine-learning autoencoder

我正在将一段工作代码从 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 是一维的,一切正常。

0 个答案:

没有答案