public static LogisticFunction GetLogisticFunction(LogisticFunctions logistic) { switch (logistic) { case LogisticFunctions.Sigmoid: return(new Sigmoid()); case LogisticFunctions.SoftPlus: return(new SoftPlus()); case LogisticFunctions.HypTan: return(new HyperbolicTan()); case LogisticFunctions.ArcTan: return(new ArcTan()); case LogisticFunctions.IdentityFunction: return(new IdentityFunction()); case LogisticFunctions.ReLF: return(new RectifiedLinearUnit()); case LogisticFunctions.SoftMax: return(new SoftMax()); default: return(null); } }
public static bool IsCanonicalLink(LogisticFunctions logistic, LossFunctions loss) { switch (logistic) { case LogisticFunctions.Sigmoid: return(loss == LossFunctions.MLE); case LogisticFunctions.IdentityFunction: return(loss == LossFunctions.MSE); case LogisticFunctions.SoftMax: return(loss == LossFunctions.CE); default: return(false); } }
/// <summary> /// 3Layer Backpropagation Class /// </summary> /// <param name="inputWeight">Input Weight.</param> /// <param name="outputWeight">Output Weight.</param> /// <param name="hiddenLayer">Hidden layer.</param> /// <param name="outputLayer">Output layer.</param> /// <param name="hiddenLogisticFunc">Hidden Layer Logistic Function. Default = SigmoidFunc</param> /// <param name="outputLogisticFunc">Output Layer Logistic Function. Default = SigmoidFunc</param> /// <param name="lossFunc">Output Layer Loss Function. Default = MSE</param> /// <param name="learnRate">Learn rate. Default = 0.01</param> public BackPropagation(Matrix inputWeight, Matrix outputWeight, Matrix hiddenLayer, Matrix outputLayer, LogisticFunctions hiddenLogisticFunc = LogisticFunctions.Sigmoid, LogisticFunctions outputLogisticFunc = LogisticFunctions.Sigmoid, LossFunctions lossFunc = LossFunctions.MSE, double learnRate = 0.01) { _inputWeight = inputWeight; _outputWeight = outputWeight; _hiddenLayer = hiddenLayer; _outputLayer = outputLayer; HiddenLogisticFunc = hiddenLogisticFunc; OutputLogisticFunc = outputLogisticFunc; LossFunc = lossFunc; _hiddenLogisticFunc = GetLogisticFunction(hiddenLogisticFunc); _outputLogisticFunc = GetLogisticFunction(outputLogisticFunc); _lossFunc = GetLossFunction(lossFunc); LearnRate = learnRate; }