エラー:入力のチェック時にエラーが発生しました:dense_Dense1_inputに3つの次元があると予想されました。しかし、形状1,9の配列を取得しました

Jan 05 2021

私はtensorflow.jsを初めて使用し、キャンバスのどちら側が好きかを示す単純なモデルを作成しようとしています。

const model = tf.sequential();
model.add(
         tf.layers.dense({
           units: 200,
           activation: "sigmoid",
           inputShape: [0, 1],
         })
       );
       model.add(
         tf.layers.dense({
           units: 2,
           activation: "softmax",
         })
       );
       model.compile({
         optimizer: optimizer,
         loss: "categoricalCrossentropy",
         metrics: ["accuracy"],
       });

私のトレーニングとテストのデータ

        const yTrain = tf.tensor2d(
          [10, 130, 60, 20, 150, 110, 3, 160, 99],
          [1, 9]
        );
        const xTrain = tf.tensor2d([0, 1, 0, 0, 1, 1, 0, 1, 0], [1, 9]);

        const yTest = tf.tensor2d(
          [5, 106, 33, 88, 104, 140, 7, 60, 154],
          [1, 9]
        );
        const xTest = tf.tensor2d([0, 1, 0, 0, 1, 1, 0, 0, 1], [1, 9]);

回答

edkeveked Jan 05 2021 at 22:11

inputShapeのサイズは2であるため、フィーチャ(ここではxtrainとxtest)の次元は3である必要があります。

さらに、次元サイズを0にすることは意味がありません(つまり、テンソルが空であることを意味します)。

xtrainとxtestの形状が与えられると、inputShape[a, b]はになります[b]

モデルと学習データとの間のこの形状の不一致が議論されているこことそこ