Я пытаюсь обучить сеть, которая в качестве входных данных принимает определенную строку, содержащую некоторые предопределенные значения, которые позже я извлеку из базы данных или JSON.Я нормализую данные путем деления значения ACII каждого символа на 1000, что оставляет мне массив значений между 0 и 1 каждого символа входной строки.Ошибка в том, что когда я начинаю тренировку, я получаю ошибку обучения: NaN, и странно то, что она работает, если у меня есть только один вход, ниже приведен код.
var brain = require('brain.js');
function normalize(string){
var input = [];
for(let i=0; i<string.length; i++){
input.push(string.charCodeAt(i)/1000);
}
return input;
}
function convert_ascii(ascii){
var string = '';
for(let i=0; i<ascii.length;i++){
string += String.fromCharCode(ascii[i]*1000);
}
return string;
}
var string1 = normalize('Invoice Number IN-7688998788963');
var string2 = normalize('Invoice Date April 19, 2019');
var string3 = normalize('Due Date May 3, 2019');
var string4 = normalize('Total Due $104.50');
var string5 = normalize('Sub Total $95.00');
var string6 = normalize('Tax $9.50');
const net = new brain.NeuralNetwork();
net.train([
{ input: string1, output: { invoice_num: 1 } },
{ input: string2, output: { date: 1 } },
{ input: string3, output: { due_date: 1 } },
{ input: string4, output: { total_due: 1 } },
{ input: string5, output: { sub_total: 1 } },
{ input: string6, output: { tax: 1 } }
], {
log: detail => console.log(detail), iterations: 1500
});
let output = net.run(normalize('Invoice Number 1241341'));
console.log(output);
Сильфонный код работает:
var brain = require('brain.js');
function normalize(string){
var input = [];
for(let i=0; i<string.length; i++){
input.push(string.charCodeAt(i)/1000);
}
return input;
}
function convert_ascii(ascii){
var string = '';
for(let i=0; i<ascii.length;i++){
string += String.fromCharCode(ascii[i]*1000);
}
return string;
}
var string1 = normalize('Invoice Number IN-7688998788963');
var string2 = normalize('Invoice Date April 19, 2019');
var string3 = normalize('Due Date May 3, 2019');
var string4 = normalize('Total Due $104.50');
var string5 = normalize('Sub Total $95.00');
var string6 = normalize('Tax $9.50');
const net = new brain.NeuralNetwork();
net.train([
{ input: string1, output: { invoice_num: 1 } }
], {
log: detail => console.log(detail), iterations: 1500
});
let output = net.run(normalize('Invoice Number 1241341'));
console.log(output);