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"
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"
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"
def test_gradient(function, tol=1e-2): x0 = function.param_init() assert check_grad(function, x0) == 0