UNPKG

@debut/plugin-neurofilter

Version:

Neuro filter plugin for debute

63 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NeuroHelper = void 0; const brain_js_1 = require("brain.js"); const community_core_1 = require("@debut/community-core"); class NeuroHelper { constructor(botName, nnOptions = {}) { this.trained = false; this.trainingSet = []; this.botData = community_core_1.utils.cli.getBotData(botName); this.nn = new brain_js_1.NeuralNetwork({ hiddenLayers: [64, 32, 16], activation: 'sigmoid', leakyReluAlpha: 0.01, ...nnOptions, }); } addTrainingData(data) { this.trainingSet.push(data); } updateTrainingOut(id, output) { const target = this.trainingSet.find((item) => item.id === id); if (!target) { return; } target.output = [output]; } train(options = {}) { this.trainingSet.forEach((data) => { if (!data || data.output === null) { throw 'Training data is invalid'; } }); console.log('Traning data size:', this.trainingSet.length); console.log('\n---- Neuro Training ----\n'); this.nn.train(this.trainingSet, { iterations: 40000, errorThresh: 0.006, logPeriod: 1000, log: true, ...options, }); } run(input) { // @ts-ignore return this.nn.run(input)[0]; } save(ticker) { const path = `${this.botData.src}/neuroData/${ticker}.json`; community_core_1.utils.file.ensureFile(path); community_core_1.utils.file.saveFile(path, this.nn.toJSON()); } load(ticker) { const path = `${this.botData.src}/neuroData/${ticker}.json`; const data = community_core_1.utils.file.readFile(path); if (data) { this.nn.fromJSON(JSON.parse(data)); this.trained = true; } } } exports.NeuroHelper = NeuroHelper; //# sourceMappingURL=neurohelper.js.map