Search in sources :

Example 1 with SigmoidDerivative

use of org.nd4j.linalg.api.ops.impl.transforms.SigmoidDerivative in project nd4j by deeplearning4j.

the class DerivativeTests method testSigmoidDerivative.

@Test
public void testSigmoidDerivative() {
    // Derivative of sigmoid: ds(x)/dx = s(x)*(1-s(x))
    // s(x) = 1 / (exp(-x) + 1)
    INDArray z = Nd4j.zeros(100);
    double[] expOut = new double[100];
    for (int i = 0; i < 100; i++) {
        double x = 0.1 * (i - 50);
        z.putScalar(i, x);
        double sigmoid = 1.0 / (FastMath.exp(-x) + 1);
        expOut[i] = sigmoid * (1 - sigmoid);
    }
    INDArray zPrime = Nd4j.getExecutioner().execAndReturn(new SigmoidDerivative(z));
    for (int i = 0; i < 100; i++) {
        double relError = Math.abs(expOut[i] - zPrime.getDouble(i)) / (Math.abs(expOut[i]) + Math.abs(zPrime.getDouble(i)));
        assertTrue(relError < REL_ERROR_TOLERANCE);
    }
}
Also used : INDArray(org.nd4j.linalg.api.ndarray.INDArray) SigmoidDerivative(org.nd4j.linalg.api.ops.impl.transforms.SigmoidDerivative) Test(org.junit.Test) BaseNd4jTest(org.nd4j.linalg.BaseNd4jTest)

Example 2 with SigmoidDerivative

use of org.nd4j.linalg.api.ops.impl.transforms.SigmoidDerivative in project nd4j by deeplearning4j.

the class ActivationSigmoid method backprop.

@Override
public Pair<INDArray, INDArray> backprop(INDArray in, INDArray epsilon) {
    INDArray dLdz = Nd4j.getExecutioner().execAndReturn(new SigmoidDerivative(in));
    dLdz.muli(epsilon);
    return new Pair<>(dLdz, null);
}
Also used : INDArray(org.nd4j.linalg.api.ndarray.INDArray) SigmoidDerivative(org.nd4j.linalg.api.ops.impl.transforms.SigmoidDerivative) Pair(org.nd4j.linalg.primitives.Pair)

Aggregations

INDArray (org.nd4j.linalg.api.ndarray.INDArray)2 SigmoidDerivative (org.nd4j.linalg.api.ops.impl.transforms.SigmoidDerivative)2 Test (org.junit.Test)1 BaseNd4jTest (org.nd4j.linalg.BaseNd4jTest)1 Pair (org.nd4j.linalg.primitives.Pair)1