node.js не работает загрузка обученной сети библиотека brain.js

  • Автор темы Автор темы ВПР
  • Дата начала Дата начала

ВПР

A-Parser Enterprise License
A-Parser Enterprise
Если обучить за менее чем 5 секунд сетку и попробовать что-то вычислить то работает.
Но если сетку сохранить в JSON или в функцию то обратно загрузить не удастся.

При загрузке из JSON
Ошибка:
Код:
TypeError: Cannot read property 'bias' of undefined
    at NeuralNetwork.fromJSON (files/node_modules/brain.js/./dist/neural-network.js:1136:45)


При загрузке из функции подсчет идет и результат выдает, но вместо цифр выдает null

Воспроизводится как на сложных сетках так и на простом примере из репозитория.
Немного его изменил чтобы он пытался записать json в файл и считать

Запись в JSON идет корректная. Если запустить такой же пример с тем же файлом на на обычной node.js 8+ версии то все загружается корректно.

Обучать сетки в парсере конечно не планируется, но вот загрузить обученную очень хотелось бы иметь возможность.

https://www.npmjs.com/package/brain.js

Код:
const fs = require('fs');
var brain    = require('brain.js');


const a = character(
   '.#####.' +
   '#.....#' +
   '#.....#' +
   '#######' +
   '#.....#' +
   '#.....#' +
   '#.....#'
);
const b = character(
   '######.' +
   '#.....#' +
   '#.....#' +
   '######.' +
   '#.....#' +
   '#.....#' +
   '######.'
);
const c = character(
   '#######' +
   '#......' +
   '#......' +
   '#......' +
   '#......' +
   '#......' +
   '#######'
);

try {

   const net = new brain.NeuralNetwork();
   let basejson = require('base_2.json');
   net.fromJSON(basejson);
   console.log('Загружено из JSON');

   let test = {"factor1":1,"factor2":1,"factor3":1,"factor4":1,"factor5":1,"factor6":1};
   console.log(JSON.stringify(net(test)));
   //net.fromJSON(base);

   brain.likely(character(
      '.#####.' +
      '#.....#' +
      '#.....#' +
      '###.###' +
      '#.....#' +
      '#.....#' +
      '#.....#'
   ), net);
   console.log(brain.likely(character(
      '.#####.' +
      '#.....#' +
      '#.....#' +
      '###.###' +
      '#.....#' +
      '#.....#' +
      '#.....#'
   ), net));
   // do stuff
} catch (ex) {

   console.log(ex.stack);

   /**
    * Learn the letters A through C.
    */
   const net = new brain.NeuralNetwork();
   net.train([
      { input: a, output: { a: 1 } },
      { input: b, output: { b: 1 } },
      { input: c, output: { c: 1 } }
   ], {
      log: detail => console.log(detail)
   });
   fs.writeFile('./files/node_modules/base_2.json',  JSON.stringify(net.toJSON()), function (r,fd) {
      console.log(r,__dirname);
   });

   console.log(brain.likely(character(
      '.#####.' +
      '#.....#' +
      '#.....#' +
      '###.###' +
      '#.....#' +
      '#.....#' +
      '#.....#'
   ), net));

}
 
в примере не хватает как минимум функции character
 
в примере не хватает как минимум функции character
Пообщались в чатике, это пример из библиотеки. Но даже с этой функции воспроизвести не удалось.


Начал воспроизводить с нуля, на чистом парсере и все завелось.
Потом попробовал интегрировать с большой обученной сеткой в текущий парсер и получил ту же проблему.
Значит проблема была в самом парсере.

Начал копать, проблема обнаружилась в подключаемой библиотеке которая переопределяла прототип у массивов и объектов.
Отказаться пока не удалось, но прокатило если подключать сетку до того модуля то все заводится.

Всем спасибо ) пошел обкатывать.
 
Назад
Верх