/// <summary> /// Create new struct. /// </summary> /// <param name="numNeurons">Number of neurons in layer.</param> /// <param name="recurrin">Are neurons in layer recurring.</param> /// <param name="activeFunc">Neuron activation function.</param> public NeuralNetworkLayer(int numNeurons, bool recurrin, NeuralNetwork.NeuronActivationFunction activeFunc) { numberOfNeurons = numNeurons; recurring = recurrin; activationFunction = activeFunc; biases = null; }
/// <summary> /// Create new struct from existing. /// </summary> /// <param name="src">Existing layer to copy.</param> public NeuralNetworkLayer(NeuralNetworkLayer src) { numberOfNeurons = src.numberOfNeurons; recurring = src.recurring; activationFunction = src.activationFunction; biases = null; }
//sample 1d function points and return array of points /// <summary> /// Sample 1D function from xMin to xMax building array of 2D points. /// </summary> /// <param name="numSamples"></param> /// <param name="func"></param> /// <param name="xMin"></param> /// <param name="xMax"></param> /// <returns>Array of 2D points.</returns> public static float[][] SampleFunction(int numSamples, NeuralNetwork.NeuronActivationFunction func, float xMin, float xMax) { float[][] res = new float[numSamples][]; for (int i = 0; i < numSamples; i++) { float sx = (i / (float)(numSamples - 1)) * (xMax - xMin) + xMin; res[i] = new float[] { sx, func(sx) }; } return(res); }
public static int GetActivationFunctionID(NeuralNetwork.NeuronActivationFunction activeFunc) { if (activeFunc == Identity_ActivationFunction) { return(0); } if (activeFunc == Rectifier_ActivationFunction) { return(1); } if (activeFunc == Sin_ActivationFunction) { return(2); } if (activeFunc == Cos_ActivationFunction) { return(3); } if (activeFunc == Tan_ActivationFunction) { return(4); } if (activeFunc == Tanh_ActivationFunction) { return(5); } if (activeFunc == Sinh_ActivationFunction) { return(6); } if (activeFunc == Exp_ActivationFunction) { return(7); } if (activeFunc == Sigmoid_ActivationFunction) { return(8); } if (activeFunc == Sqrt_ActivationFunction) { return(9); } if (activeFunc == Pow2_ActivationFunction) { return(10); } return(-1); }
public static string GetActivationFunctionGLSLName(NeuralNetwork.NeuronActivationFunction activeFunc) { if (activeFunc == Identity_ActivationFunction) { return(""); } if (activeFunc == Rectifier_ActivationFunction) { return("rectifier"); } if (activeFunc == Sin_ActivationFunction) { return("sin"); } if (activeFunc == Cos_ActivationFunction) { return("cos"); } if (activeFunc == Tan_ActivationFunction) { return("tan"); } if (activeFunc == Tanh_ActivationFunction) { return("tanh"); } if (activeFunc == Sinh_ActivationFunction) { return("sinh"); } if (activeFunc == Exp_ActivationFunction) { return("exp"); } if (activeFunc == Sigmoid_ActivationFunction) { return("sigmoid"); } if (activeFunc == Sqrt_ActivationFunction) { return("sqrt"); } if (activeFunc == Pow2_ActivationFunction) { return("pow2"); } return(""); }
public void LoadStructure(Stream s) { numberOfNeurons = Utils.IntFromStream(s); recurring = s.ReadByte() == 1; activationFunction = Utils.GetActivationFunctionFromID(Utils.IntFromStream(s)); }