Я ищу модель для чат-бота, и я сталкиваюсь с этой ошибкой. Будем весьма благодарны за любые предложения о том, как это исправить. Спасибо.
Код.
Настройка нейронной сети:
var model = await tf.sequential();
model.add(tf.layers.dense({
units: 8,
inputShape: training[0].length
}));
// console.log(model);
model.add(tf.layers.dense({
units: 8
}));
model.add(tf.layers.dense({
units: 8
}));
model.add(tf.layers.dense({
units: output[0].length,
activation: 'softmax'
}))
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
await model.fit(tf.stack(training), tf.stack(output), {
epochs: 1000,
batchSize: 8
}).then(printCall => {
// IIFE function to prompt for user input.
(function () {
console.log("(Type 'quit' to stop)");
while (true) {
let inp = "Hi";
if (inp.toLowerCase() == "quit")
break;
var results = model.predict(tf.tensor(bagOfWords(inp, uniq_words)));
console.log(result);
}
})();
})
Вспомогательные данные: обучение 2d массива с размерами (23, 38) вывод 2d массива с измерениями ( 23, 6)
Мешок слов:
function bagOfWords(s, words) {
var bag = [];
for (var i = 0; i < uniq_words.length; i++) {
bag.push(0);
}
var sWords = tokenizer.tokenize(s);
var s_words = [];
sWords.map(each => {
s_words.push(natural.LancasterStemmer.stem(each));
});
for (var se in s_words) {
for (var w in uniq_words) {
if (uniq_words[w] == s_words[se])
bag[w] = 1;
}
}
return bag;
}
Вышеприведенная функция bagOfWords возвращает одномерный массив с размерами (38, 1).
Пожалуйста, дайте мне знать, если Я могу добавить что-нибудь еще, чтобы лучше прояснить проблему. Спасибо.