Exemple #1
0
def test_check_grad():
    """Tests the check_grad() function"""
    def f_df_correct(x):
        return x**2, 2 * x

    def f_df_incorrect(x):
        return x**3, 0.5 * x**2

    output = StringIO()
    check_grad(f_df_correct, 5, out=output, style='grid')

    # helper functions
    ansi_escape = re.compile(r'\x1b[^m]*m')
    getvalues = lambda o: [
        float(ansi_escape.sub('', s.strip()).split(' ')[0])
        for s in o.getvalue().split('\n')[3].split('|')[1:-1]
    ]

    # get the first row of data
    values = getvalues(output)
    print(values)
    assert values[0] == values[1] == 10.0, "Correct gradient computation"
    assert np.allclose(values[2], 0), "Correct error computation"

    output = StringIO()
    check_grad(f_df_incorrect, 5, out=output, style='grid')
    values = getvalues(output)
    printed_error = values[2]
    correct_error = np.abs(values[0] - values[1]) / (np.abs(values[0]) +
                                                     np.abs(values[1]))
    assert np.isclose(printed_error, correct_error,
                      atol=1e-4), "Correct relative error"
Exemple #2
0
def test_check_grad():
    """Tests the check_grad() function"""

    def f_df_correct(x):
        return x**2, 2 * x

    def f_df_incorrect(x):
        return x**3, 0.5 * x**2

    output = StringIO()
    check_grad(f_df_correct, 5, out=output, style='grid')

    # helper functions
    ansi_escape = re.compile(r'\x1b[^m]*m')
    getvalues = lambda o: [float(ansi_escape.sub('', s.strip()).split(' ')[0])
                           for s in o.getvalue().split('\n')[3].split('|')[1:-1]]

    # get the first row of data
    values = getvalues(output)
    print(values)
    assert values[0] == values[1] == 10.0, "Correct gradient computation"
    assert np.allclose(values[2], 0), "Correct error computation"

    output = StringIO()
    check_grad(f_df_incorrect, 5, out=output, style='grid')
    values = getvalues(output)
    printed_error = values[2]
    correct_error = np.abs(values[0] - values[1]) / (np.abs(values[0]) + np.abs(values[1]))
    assert np.isclose(printed_error, correct_error, atol=1e-4), "Correct relative error"
Exemple #3
0
def test_check_grad():
    """Tests the check_grad() function"""

    def f_df_correct(x):
        return x ** 2, 2 * x

    def f_df_incorrect(x):
        return x ** 3, 0.5 * x ** 2

    output = StringIO()
    check_grad(f_df_correct, 5, out=output)

    # helper functions
    getvalues = lambda o: [float(s.strip()) for s in o.getvalue().split("\n")[3].split("|")[:-1]]

    # get the first row of data
    values = getvalues(output)
    assert values[0] == values[1] == 10.0, "Correct gradient computation"
    assert values[2] == 0.0, "Correct error computation"

    output = StringIO()
    check_grad(f_df_incorrect, 5, out=output)
    values = getvalues(output)
    printed_error = values[2]
    correct_error = np.abs(values[0] - values[1]) / (np.abs(values[0]) + np.abs(values[1]))
    assert np.isclose(printed_error, correct_error), "Correct relative error"
Exemple #4
0
def test_gradient(function, tol=1e-2):
    x0 = function.param_init()
    assert check_grad(function, x0) == 0