检查输入时出错:预期density_Dense1_input具有x尺寸。但是得到了形状为y,z的数组

时间:2018-07-13 13:52:12

标签: javascript tensorflow tensorflow.js

总体来说,我对Tensorflowjs和Tensorflow非常陌生。我有一些数据,容量使用率超出100%,因此数字介于0和100之间,并且每天有5个小时记录这些容量。因此,我有一个5天的矩阵,其中100%中包含5个百分比。

我有以下模型:

const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [5, 5] }));
model.compile({ loss: 'binaryCrossentropy', optimizer: 'sgd' });

// Input data
// Array of days, and their capacity used out of 
// 100% for 5 hour period
const xs = tf.tensor([
  [11, 23, 34, 45, 96],
  [12, 23, 43, 56, 23],
  [12, 23, 56, 67, 56],
  [13, 34, 56, 45, 67],
  [12, 23, 54, 56, 78]
]);

// Labels
const ys = tf.tensor([[1], [2], [3], [4], [5]]);

// Train the model using the data.
model.fit(xs, ys).then(() => {
  model.predict(tf.tensor(5)).print();
}).catch((e) => {
  console.log(e.message);
});

我收到一条错误消息:Error when checking input: expected dense_Dense1_input to have 3 dimension(s). but got array with shape 5,5。因此,我怀疑我以某种方式错误地输入或映射了我的数据。

1 个答案:

答案 0 :(得分:2)

您的错误来自一方面是训练和测试数据的大小不匹配,另一方面是由于定义为模型的输入

model.add(tf.layers.dense({units: 1, inputShape: [5, 5] }));

inputShape是您的输入尺寸。这里是5,因为每个要素都是大小为5的数组。

model.predict(tf.tensor(5))

另外,为了测试模型,数据的形状应与训练模型时的形状相同。您的模型无法使用tf.tensor(5)进行预测。因为您的训练数据和测试数据大小不匹配。考虑使用此测试数据,而不是tf.tensor2d([5, 1, 2, 3, 4], [1, 5])

这是工作中的snipet