public void MishTest() { var a = new Matrix(2, 2); a.InRandomize(); var b = a.Duplicate(); a = new Mish().Forward(a); b.InMap((x) => x * Math.Tanh(Math.Log(1 + Math.Exp(x)))); Assert.IsTrue(Math.Abs(a.FrobeniusNorm() - b.FrobeniusNorm()) < 0.1, new Mish().Type().ToString() + " Activation."); }
public void MishPrimeTest() { var a = new Matrix(2, 2); a.InRandomize(); var b = a.Duplicate(); a = new Mish().Backward(a); b.InMap((x) => Math.Exp(x) * (4 * (x + 1) + 4 * Math.Exp(2 * x) + Math.Exp(3 * x) + Math.Exp(x) * (4 * x + 6)) / Math.Pow(2 * Math.Exp(x) + Math.Exp(2 * x) + 2, 2)); Assert.IsTrue(Math.Abs(a.FrobeniusNorm() - b.FrobeniusNorm()) < 0.1, new Mish().Type().ToString() + " Derivative."); }
public Layer(int nCount, int index, ActivationSettings activationSettings) { NCount = nCount; Index = index; ActivationType = activationSettings.Type(); // Activation Setup switch (activationSettings.Type()) { case EActivationType.Invalid: Activation = null; throw new ArgumentException("Activation Type Invalid."); case EActivationType.Arctan: Activation = new Arctan(); break; case EActivationType.BinaryStep: Activation = new BinaryStep(); break; case EActivationType.BipolarSigmoid: Activation = new BipolarSigmoid(); break; case EActivationType.ELU: Activation = new ELU((ELUSettings)activationSettings); break; case EActivationType.HardSigmoid: Activation = new HardSigmoid(); break; case EActivationType.HardTanh: Activation = new HardTanh(); break; case EActivationType.Identity: Activation = new Identity(); break; case EActivationType.Logit: Activation = new Logit(); break; case EActivationType.LReLU: Activation = new LReLU((LReLUSettings)activationSettings); break; case EActivationType.Mish: Activation = new Mish(); break; case EActivationType.ReLU: Activation = new ReLU(); break; case EActivationType.SeLU: Activation = new SeLU(); break; case EActivationType.Sigmoid: Activation = new Sigmoid(); break; case EActivationType.Softmax: Activation = new Softmax(); break; case EActivationType.Softplus: Activation = new Softplus(); break; case EActivationType.Softsign: Activation = new Softsign(); break; case EActivationType.Tanh: Activation = new Tanh(); break; default: throw new ArgumentException("Activation Type Invalid."); } }