Node.js 预期密集的“U Dense1”输入具有形状;a「;但是得到了一个带有形状的数组;b";

Node.js 预期密集的“U Dense1”输入具有形状;a「;但是得到了一个带有形状的数组;b";,node.js,tensorflow.js,Node.js,Tensorflow.js,有人能帮我做这个TensorFlow JS项目吗? 这是一个有机器学习功能的聊天机器人,我坚持“构建神经网络”, 项目链接: 培训代码位于/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({uni

有人能帮我做这个TensorFlow JS项目吗? 这是一个有机器学习功能的聊天机器人,我坚持“构建神经网络”,

项目链接:

培训代码位于/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}); 

文档。长度
是您拥有的培训数据量,而不是模型的输入形状。因此,您的训练数据的形状不适合您的模型

正确的形状应该是
xs.shape

所以你的第一层应该是:

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

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

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

预期密集密度1_输入具有形状a,但获得具有形状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}));

您能给我们看一下您的
xs
tensor吗?tensor{isdisposedintenal:false,size:1296,shape:[27,48],dtype:'float32',strips:[48],dataId:{},id:0,rankType:'2'}是27是批输入量还是48,还是您的输入是二维的?尝试使用
model.fit(xs.transpose(),ys,{epochs:1000})我不知道,我的数据是这样的,那是你的文档数组?