void read( const FileNode& fn ) { clear(); vector<int> _layer_sizes; readVectorOrMat(fn["layer_sizes"], _layer_sizes); setLayerSizes( _layer_sizes ); int i, l_count = layer_count(); read_params(fn); size_t esz = weights[0].elemSize(); FileNode w = fn["input_scale"]; w.readRaw("d", weights[0].ptr(), weights[0].total()*esz); w = fn["output_scale"]; w.readRaw("d", weights[l_count].ptr(), weights[l_count].total()*esz); w = fn["inv_output_scale"]; w.readRaw("d", weights[l_count+1].ptr(), weights[l_count+1].total()*esz); FileNodeIterator w_it = fn["weights"].begin(); for( i = 1; i < l_count; i++, ++w_it ) (*w_it).readRaw("d", weights[i].ptr(), weights[i].total()*esz); trained = true; }