NeuralNetworkSimpleInternal::NeuralNetworkSimpleInternal(IntArray const& numNodes, const float _learnRate, const float _actFuncOffset) throw() : learnRate(_learnRate), actFuncOffset(_actFuncOffset), layers((numNodes.size() < 2 ? 2 : numNodes.size())-1) { const int numLayers = numNodes.size(); if(getNumLayersIncludingInput() == numLayers) { const int size = getNumLayersExcludingInput(); for(int i = 0; i < size; i++) { int numLayerInputs = numNodes.atUnchecked(i); int numLayerOutputs = numNodes.atUnchecked(i+1); if(numLayerInputs < 1) numLayerInputs = 1; if(numLayerOutputs < 1) numLayerOutputs = 1; layers[i] = NeuralLayer(numLayerOutputs, numLayerInputs); } numInputs = numNodes.atUnchecked(0); numOutputs = numNodes.atUnchecked(numLayers-1); } else if(numLayers == 1) { int num = numNodes.atUnchecked(0); if(num < 1) num = 1; layers[0] = NeuralLayer(num, num); layers[1] = NeuralLayer(num, num); numInputs = num; numOutputs = num; } else { layers[0] = NeuralLayer(1, 1); layers[1] = NeuralLayer(1, 1); numInputs = 1; numOutputs = 1; } errorVector = NumericalArray<float>::withSize(numOutputs); }
TextArray IOKey::collectTypeNames (IntArray const& keys) throw() { const int numKeys = keys.length(); TextArray names (TextArray::withSize (numKeys)); for (int i = 0; i < numKeys; ++i) names.put (i, IOKey::getTypeName (keys.atUnchecked (i))); return names; }
TextArray Measure::collectSymbols (IntArray const& keys) throw() { const int numKeys = keys.length(); TextArray names (TextArray::withSize (numKeys)); for (int i = 0; i < numKeys; ++i) names.put (i, Measure::getSymbol (keys.atUnchecked (i))); return names; }