def test_logistic_scalar(self): var = Variable(2, 7) result = var.logistic() expected_derivative = (var.derivative * np.exp(-2)) / (1 + np.exp(-2))**2 self.assertAlmostEqual(1 / (1 + np.exp(-2)), result.value) self.assertAlmostEqual(expected_derivative, result.derivative)
def test_logistic_vector(self): var = Variable(2, np.array([2, 6, 8])) x = Variable(5, np.array([0.5, 0.7])) y = Variable(3, np.array([0.5, 0.9])) result = var.logistic() expected_derivative = (var.derivative * np.exp(-2)) / (1 + np.exp(-2))**2 equation = x + y**5 equation_result = equation.logistic() equation_expected_derivative = (equation.derivative * np.exp(-equation.value)) / ( 1 + np.exp(-equation.value))**2 self.assertAlmostEqual(1 / (1 + np.exp(-2)), result.value) np.testing.assert_array_almost_equal(expected_derivative, result.derivative) self.assertAlmostEqual(1 / (1 + np.exp(-equation.value)), equation_result.value) np.testing.assert_array_almost_equal(equation_expected_derivative, equation_result.derivative)