コード例 #1
0
def test_composite1():
    x1 = Var(-3)
    x2 = Var(5)
    x3 = Var(10)
    y = abs(x1) / x2 * x3
    x1.forward()
    assert y.grad(x1) == -2.
コード例 #2
0
def test_composite_trig():
    x = Var(5)
    x2 = ops.sin(x) / ops.cos(x)
    x3 = ops.tan(x)
    x.forward()
    assert np.all(x2.val == pytest.approx(x3.val))
    assert np.all(x2.grad(x) == pytest.approx(x3.grad(x)))
コード例 #3
0
def test_composite2():
    x1 = Var(-3)
    x2 = Var(5)
    x3 = Var(1)
    y = x2**x1 / x3
    x3.forward()
    assert y.grad(x3) == -.008
コード例 #4
0
def test_composite2():
    x1 = Var(-3)
    x2 = Var([5, 10])
    x3 = Var([1, 1])
    y = x2**x1 / x3
    x3.forward()
    assert np.all(y.grad(x3) == [-.008, -.001])
コード例 #5
0
def test_composite1():
    x1 = Var(-3)
    x2 = Var([5, 10])
    x3 = Var([10, 100])
    y = abs(x1) / x2 * x3
    x1.forward()
    assert np.all(y.grad(x1) == [-2, -10])
コード例 #6
0
def test_sub_vars():
    x1 = Var([1, 1, 1])
    x2 = Var([1, 2, 3])
    y = x1 - x2
    x1.forward()
    x2.forward()
    assert np.all(y == Var([0, -1, -2]))
    assert np.all(y.grad(x1) == np.array([1, 1, 1]))
    assert np.all(y.grad(x2) == np.array([-1, -1, -1]))
コード例 #7
0
def test_add_vars():
    x1 = Var([1, 2, 3])
    x2 = Var([1, 2, 3])
    y = x1 + x2
    x1.forward()
    x2.forward()
    assert np.all(y == Var([2, 4, 6]))
    assert np.all(y.grad(x1) == np.array([1, 1, 1]))
    assert np.all(y.grad(x2) == np.array([1, 1, 1]))
コード例 #8
0
def test_mul_vars():
    x1 = Var(8)
    x2 = Var([2, 2, 2])
    y = x1 * x2
    x1.forward()
    x2.forward()
    assert np.all(y == Var([16, 16, 16]))
    assert np.all(y.grad(x1) == np.array([2, 2, 2]))
    assert np.all(y.grad(x2) == np.array([8, 8, 8]))
コード例 #9
0
def test_pow_vars_forward():
    x = Var(np.e)
    x2 = Var(2)
    y = x**x2
    x.forward()
    x2.forward()
    assert y.val == np.e**2
    assert np.all(y.grad(x) == np.array([2 * np.e]))
    assert np.all(y.grad(x2) == np.array([np.e**2]))
コード例 #10
0
def test_div_vars():
    x = Var([8, 1])
    x2 = Var([2, 1])
    y = x / x2
    x.forward()
    x2.forward()
    assert np.all(y == Var([4, 1]))
    assert np.all(y.grad(x) == np.array([0.5, 1]))
    assert np.all(y.grad(x2) == np.array([-2., -1]))
コード例 #11
0
def test_sub_vars_forward():
    x1 = Var(1)
    x2 = Var(2)
    y = x1 - x2
    x1.forward()
    x2.forward()
    assert y.val == -1
    assert np.all(y.grad(x1) == np.array([1]))
    assert np.all(y.grad(x2) == np.array([-1]))
コード例 #12
0
def test_mul_vars_forward():
    x1 = Var(8)
    x2 = Var(2)
    y = x1 * x2
    x1.forward()
    x2.forward()
    assert y.val == 16
    assert np.all(y.grad(x1) == np.array([2]))
    assert np.all(y.grad(x2) == np.array([8]))
コード例 #13
0
def test_add_vars_forward():
    x1 = Var(1)
    x2 = Var(2)
    y = x1 + x2
    x1.forward()
    x2.forward()
    assert y.val == 3
    assert np.all(y.grad(x1) == np.array([1]))
    assert np.all(y.grad(x2) == np.array([1]))
コード例 #14
0
def test_pow_vars():
    x = Var(np.e)
    x2 = Var([1, 2, 3])
    y = x**x2
    x.forward()
    x2.forward()
    assert np.all(y == Var([np.e**1, np.e**2, np.e**3]))
    assert np.all(y.grad(x) == np.array([1, 2 * np.e, 3 * np.e**2]))
    assert np.all(y.grad(x2) == np.array([np.e, np.e**2, np.e**3]))
コード例 #15
0
def test_div_vars_forward():
    x = Var(8)
    x2 = Var(2)
    y = x / x2
    x.forward()
    x2.forward()
    assert y.val == 4
    assert np.all(y.grad(x) == np.array([0.5]))
    assert np.all(y.grad(x2) == np.array([-2]))
コード例 #16
0
def test_radd_var_forward():
    x = Var(3)
    y = 6 + x
    x.forward()
    assert y.val == 9
    assert np.all(y.grad(x) == np.array([1]))
コード例 #17
0
def test_add_var_number_forward():
    x = Var(3)
    y = x + 5
    x.forward()
    assert y.val == 8
    assert np.all(y.grad(x) == np.array([1]))
コード例 #18
0
def test_abs_forward():
    x = Var(-2)
    y = abs(x)
    x.forward()
    assert y.val == 2
    assert y.grad(x) == np.array([-1])
コード例 #19
0
def test_rmul_vars_forward():
    x = Var(3)
    y = 6 * x
    x.forward()
    assert y.val == 18
    assert np.all(y.grad(x) == np.array([6]))
コード例 #20
0
def test_rpow_vars_forward():
    x = Var(3)
    y = np.e**x
    x.forward()
    assert y.val == np.e**3
    assert np.all(y.grad(x) == np.array([np.e**3]))
コード例 #21
0
def test_pow_var_number_forward():
    x = Var(3)
    y = x**5
    x.forward()
    assert y.val == 243
    assert np.all(y.grad(x) == np.array([405]))
コード例 #22
0
def test_neg_forward():
    x = Var(2)
    y = -x
    assert y.val == -2
    x.forward()
    assert y.grad(x) == np.array([-1])
コード例 #23
0
def test_rdiv_vars_forward():
    x = Var(3)
    y = 6 / x
    x.forward()
    assert y.val == 2
    assert np.all(y.grad(x) == np.array([-2 / 3]))
コード例 #24
0
def test_div_var_number_forward():
    x = Var(10)
    y = x / 5
    x.forward()
    assert y.val == 2.
    assert np.all(y.grad(x) == np.array([0.2]))
コード例 #25
0
def test_sub_var_number_forward():
    x = Var(3)
    y = x - 5
    x.forward()
    assert y.val == -2
    assert np.all(y.grad(x) == np.array([1]))
コード例 #26
0
def test_sub_var_number():
    x = Var([1, 2, 3])
    y = x - 5
    x.forward()
    assert np.all(y == Var([-4, -3, -2]))
    assert np.all(y.grad(x) == np.array([1, 1, 1]))
コード例 #27
0
def test_rsub_var_forward():
    x = Var(3)
    y = 6 - x
    x.forward()
    assert y.val == 3
    assert np.all(y.grad(x) == np.array([-1]))
コード例 #28
0
def test_radd_var():
    x = Var([1, 2, 3])
    y = 6 + x
    x.forward()
    assert np.all(y == Var([7, 8, 9]))
    assert np.all(y.grad(x) == np.array([1, 1, 1]))
コード例 #29
0
def test_mul_var_number_forward():
    x = Var(3)
    y = x * 5
    x.forward()
    assert y.val == 15
    assert np.all(y.grad(x) == np.array([5]))
コード例 #30
0
def test_rsub_var():
    x = Var([1, 2, 3])
    y = 6 - x
    x.forward()
    assert np.all(y == Var([5, 4, 3]))
    assert np.all(y.grad(x) == np.array([-1, -1, -1]))