@@ -63,22 +63,7 @@ export default class NeuralNetwork {
6363 *
6464 * @param {Number[] } sizes
6565 */
66- initialize ( data ) {
67- let sizes = [ ] ;
68- let inputSize = data [ 0 ] . input . length ;
69- let outputSize = data [ 0 ] . output . length ;
70- let hiddenSizes = this . hiddenSizes ;
71- if ( ! hiddenSizes ) {
72- sizes . push ( Math . max ( 3 , Math . floor ( inputSize / 2 ) ) ) ;
73- } else {
74- hiddenSizes . forEach ( size => {
75- sizes . push ( size ) ;
76- } ) ;
77- }
78-
79- sizes . unshift ( inputSize ) ;
80- sizes . push ( outputSize ) ;
81-
66+ initialize ( sizes ) {
8267 this . sizes = sizes ;
8368 this . outputLayer = this . sizes . length - 1 ;
8469 this . biases = [ ] ; // weights for bias nodes
@@ -238,6 +223,29 @@ export default class NeuralNetwork {
238223 return output ;
239224 }
240225
226+ /**
227+ *
228+ * @param data
229+ * @returns sizes
230+ */
231+ _getSizesFromData ( data ) {
232+ let sizes = [ ] ;
233+ let inputSize = data [ 0 ] . input . length ;
234+ let outputSize = data [ 0 ] . output . length ;
235+ let hiddenSizes = this . hiddenSizes ;
236+ if ( ! hiddenSizes ) {
237+ sizes . push ( Math . max ( 3 , Math . floor ( inputSize / 2 ) ) ) ;
238+ } else {
239+ hiddenSizes . forEach ( size => {
240+ sizes . push ( size ) ;
241+ } ) ;
242+ }
243+
244+ sizes . unshift ( inputSize ) ;
245+ sizes . push ( outputSize ) ;
246+ return sizes ;
247+ }
248+
241249 /**
242250 *
243251 * @param data
@@ -261,7 +269,8 @@ export default class NeuralNetwork {
261269 } ;
262270
263271 if ( this . sizes === null ) {
264- this . initialize ( data ) ;
272+ let sizes = this . _getSizesFromData ( data ) ;
273+ this . initialize ( sizes ) ;
265274 }
266275
267276 while ( res . iterations < iterations && res . error > errorThresh && Date . now ( ) > endTime ) {
@@ -313,7 +322,8 @@ export default class NeuralNetwork {
313322 } ;
314323
315324 if ( this . sizes === null ) {
316- this . initialize ( data ) ;
325+ let sizes = this . _getSizesFromData ( data ) ;
326+ this . initialize ( sizes ) ;
317327 }
318328
319329 const items = new Array ( iterations ) ;
@@ -703,8 +713,8 @@ export default class NeuralNetwork {
703713 * @param json
704714 * @returns {NeuralNetwork }
705715 */
706- fromJSON ( json ) {
707- this . initialize ( json . sizes ) ;
716+ fromJSON ( json ) {
717+ this . initialize ( json . sizes ) ;
708718
709719 for ( let i = 0 ; i <= this . outputLayer ; i ++ ) {
710720 let layer = json . layers [ i ] ;
0 commit comments