预期 dense_Dense1_input 的形状为 "a" 但得到的数组形状为 "b"

Expected dense_Dense1_input to have shape "a" but got array with shape "b"

有人愿意帮助我完成这个 TensorFlow JS 项目吗? 这是一个具有机器学习功能的聊天机器人,我坚持 'build neural network' , giveme this error

项目Link:https://github.com/ran-j/ChatBotNodeJS

训练代码在/routes/index.js第189行

//Build neural network
  model = tf.sequential();
  model.add(tf.layers.dense({inputShape: [documents.length], units: 100}));
  model.add(tf.layers.dense({units: 4}));
  model.compile({loss: 'categoricalCrossentropy', optimizer: 'sgd'});

  model.fit(xs, ys, {epochs: 1000}); 

documents.length 是您拥有的训练数据量,而不是模型的 inputShape。所以你的训练数据没有适合你模型的正确形状。

正确的形状应该是 xs.shape

所以你的第一层应该是:

tf.layers.dense({inputShape: xs.shape, units: 100})

该错误表明为模型定义的形状与模型使用的张量(无论是训练张量还是测试张量)之间存在不匹配。

为了消除错误,您需要两个形状匹配。

Expected dense_Dense1_input to have shape a but got array with shape b

错误中 a 是模型的形状,b 是引发错误的张量的形状。因此需要将模型的形状更改为 b 或将张量的形状更改为 a

最简单的方法是将模型形状更改为 b,因为第二种方法将意味着重塑张量,即

model.add(tf.layers.dense({inputShape: b, units: 100})); 

鉴于问题的模型,它将是

model.add(tf.layers.dense({inputShape: [27, 48], units: 100}));