gpt4 book ai didi

javascript - Brain.js NaN 训练结果

转载 作者:行者123 更新时间:2023-11-30 19:38:04 25 4
gpt4 key购买 nike

我正在尝试训练一个网络,该网络作为输入采用包含一些预定义值的特定字符串,稍后我将从数据库或 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);

最佳答案

你有没有解决过 NaN 问题。我在 net.biases、net.changes、net.deltas 等中得到了相同的...训练后和运行后我总是得到 NaN。

我正在将我的字符串转换为数字,然后缓冲数组以使它们的长度都相同。我见过文本作为对象键值直接发送到火车中的示例,但是一旦我离开给出的示例并尝试我自己的数据,NaN。

有趣的是,在您的第二个示例中,您在规范化字符串中包含了标题,而不仅仅是数据值。这对事情有何影响?

我意识到这是很久以前的事了,从那时起你可能已经继续前进了,但也许你可以在我发疯之前阐明一些观点并把我推向正确的方向:-)

关于javascript - Brain.js NaN 训练结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55724176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com