TensorFlow.js 使用多个输入一个输出进行训练

TensorFlow.js train using multiple inputs one output

我目前正在尝试编写一个可以对特定数字序列进行分类以采取行动的系统。 尝试使用 tensorflow.js 构建它到目前为止效果很好,但现在我 运行 遇到了一些问题。

我正在尝试使用

这样的输入来训练模型
[
    [0,1,2,3,4,5,6,7,8,9],
    [0,1,2,3,4,5,6,7,8,9],
    [0,1,2,3,4,5,6,7,8,9],
    [0,1,2,3,4,5,6,7,8,9],
    [0,1,2,3,4,5,6,7,8,9],
]

例如应该产生一个输出 [1]

做了张量如下

let t = tf.tensor2d([...Array.from({ length: (5 * 25) }, (v, i) => i)], [5, 25])

//Tensor
//   [[0  , 1  , 2  , ..., 22 , 23 , 24 ],
//     [25 , 26 , 27 , ..., 47 , 48 , 49 ],
//     [50 , 51 , 52 , ..., 72 , 73 , 74 ],
//     [75 , 76 , 77 , ..., 97 , 98 , 99 ],
//     [100, 101, 102, ..., 122, 123, 124]]

现在这看起来像我想要的,现在 t.shape 给了我 [ 5, 25 ] 我想我会用它作为我的模型的 inputShape,经过研究我发现我需要定义它作为 batchInputShape 而不是 inputShape,这又消除了一个错误。

loadedModel.add(tf.layers.dense({ units: 256, activation: 'relu', batchInputShape: [5, 25] }));

现在我 运行 进入模型将张量视为 多个 值的问题,因此寻找多个输出,但我试图让它只给出一个输出

在 运行 await loadedModel.fit(t, tf.tensor([0]), { epochs: 5 })

我明白了 Input Tensors should have the same number of samples as target Tensors. Found 5 input sample(s) and 1 target sample(s).

我认为这表明我上面写的。

现在我的最后一个问题是,我应该如何设置 inputShape(如果那是我做错的地方)以便只有 一个 输出是预期的。

亲切的问候

发现如果我只是将数据数组压平,它应该也能解决问题