/// <summary> /// Construct RBF network. /// </summary> /// /// <param name="inputCount">The input count.</param> /// <param name="hiddenCount">The hidden count.</param> /// <param name="outputCount">The output count.</param> /// <param name="t">The RBF type.</param> public RBFNetwork(int inputCount, int hiddenCount, int outputCount, RBFEnum t) { if (hiddenCount == 0) { throw new NeuralNetworkError( "RBF network cannot have zero hidden neurons."); } var rbf = new IRadialBasisFunction[hiddenCount]; // Set the standard RBF neuron width. // Literature seems to suggest this is a good default value. double volumeNeuronWidth = 2.0d / hiddenCount; _flat = new FlatNetworkRBF(inputCount, rbf.Length, outputCount, rbf); try { // try this SetRBFCentersAndWidthsEqualSpacing(-1, 1, t, volumeNeuronWidth, false); } catch (EncogError) { // if we have the wrong number of hidden neurons, try this RandomizeRBFCentersAndWidths(-1, 1, t); } }
/// <summary> /// Construct RBF network. /// </summary> /// /// <param name="inputCount">The input count.</param> /// <param name="outputCount">The output count.</param> /// <param name="rbf">The RBF type.</param> public RBFNetwork(int inputCount, int outputCount, IRadialBasisFunction[] rbf) { _flat = new FlatNetworkRBF(inputCount, rbf.Length, outputCount, rbf) { RBF = rbf }; }
/// <summary> /// Construct RBF network. /// </summary> /// public RBFNetwork() { _flat = new FlatNetworkRBF(); }