tensorflow.js二维输入?

tensorflow.js 2 dimensional input?

const trainingData = tf.tensor3d(fixedData.map(item => 
       
        [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],[...],[...],[...]]
))

 model.add(tf.layers.dense({
    inputShape: [4,16],
    activation: "relu",
    units: 4,
  }))
model.compile({
    loss: "meanSquaredError",
    optimizer: tf.train.adam(0.05),
    metrics: ['accuracy']
  })

  model.fit(trainingData, outputData, {epochs: 10})
  .then((history) => {
    // console.log(history)
    model.predict(testingData).print()

      })

错误: (节点:5118)UnhandledPromiseRejectionWarning:错误:检查输入时出错:预期 dense_Dense1_input 有 2 个维度。但是得到了形状为 935,4,16 的数组。

输入形状可以是二维的吗?

您没有提供完整的代码。查看您的标签(输出)数据很重要。我伪造了输出数据以匹配单个密集层的输出。 另外,正如@yudhiesh 在评论中提到的,您的张量只有 2 个维度。我还修复了这个问题,以防您想为每个输入坚持使用 [4,16]。

这是代码运行

const trainingData = tf.tensor3d( 
         [[[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],
         [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],
         [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],
         [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]]]
)

const output = tf.tensor3d( 
        [[ [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4],
         [1,2,3,4]]]
          )

const model = tf.sequential()

model.add(tf.layers.dense({
    inputShape: [4, 16],
    activation: "relu",
    units: 4
  }))



model.compile({
    loss: "meanSquaredError",
    optimizer: tf.train.adam(0.05),
    metrics: ['accuracy']
  })


model.fit(trainingData,output, {epochs: 2})
  .then((history) => {
    model.predict(trainingData).print()
}).catch((e) => {
  console.log(e.message);
});