Написал скрипт, используя библиотеку для обучения генетическим алгоритмом genetic.js
(Эта библиотека написана в свою очередь для библиотеки synaptic)
Для нейросети из synaptic поддерживается функция записи в JSON:
Network.toJSON()
И функция построения из JSON-объекта:
synaptic.Network.fromJSON(JSONObject)
С помощью этих функций я пытаюсь сохранить обученную сеть, на случай отключения интернета (обучающие данные берутся из сети), чтобы потом продолжить с того места, на котором оборвалось обучение
Сохранение в файл идет для целой популяции генетического алгоритма.
То есть, имеется объект GA = new GeneticAlgorithm(max_units, winers_count)
, интерфейс генетичекого алгоритма.
У него массив из нейросетей - популяция
Сохранение в файл идет таким образом:
var pop = [];
for (var i = 0; i < GA.Population.length; i++) {
pop.push(GA.Population[i].toJSON());
}
fs.writeFileSync('./population.json', JSON.stringify(pop));
console.log("saved");
Если же начинаю новое обучение после остановки старого, заполняю популяцию таким образом:
if (fs.existsSync('./population.json')){
var d = fs.readFileSync('./population.json', 'utf8');
var pop = JSON.parse(d);
for (var i = 0; i < pop.length; i++) {
var unit = synaptic.Network.fromJSON(pop[i]);
unit.index = i;
unit.fitness = 0;
unit.score = 0;
unit.isWinner = false;
GA.Population[i] = unit;
console.log('unit has been read');
}
}
Score(GA)
Вроде все логично, все сохраняется
Решил протестировать
Генетический алгоритм достаточно прилично натренировывает популяцию, движение к желаемому результату просматривается отменно
Закрываю программу на большом поколении, после того, как сохранил популяцию
Запускаю заново - вроде из файла читается, пишет unit has been read
, но результат активации нейросети - будто бы не обучалась
Проблема именно с сохранением или чтением
Не с преобразованием и не из-за того, что данные сильно отличаются
Потому что тестировал обучение так же на абсолютно одинаковых данных, которые популяция должна хорошо запомнить уже на 5-7 поколении. Однако - новое обучение, с чтением из сохраненного, - и все равно, будто и не обучалась
То есть, эта проблема не из-за того, что поступают слишком разные данные, и что после возобновления обучения поступают данные, с которыми сеть плохо среагирует
Что может быть не так?
P.S. Сам генетический алгоритм реализован на комбинировании и мутации уже преобразованных в JSON нейросетей, и в популяцию добавляется нейросеть, преобразованная обратно из JSON-а. То есть с самим преобразованием проблем не должно быть.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть машазин на wordpress(woocommerce)
Почему при работе с скроллом пишут элементу, который должен скроллиться position:absolute; и меняют ему значения top или left, а не используют к примеру...
Есть вот такой сайт click, в хроме всё идеально, но когда загружаешь его с сафари, начинаеться тотальный ужас, фпс 1 в секунду и жестокие лагиВ...