示例#1
0
def test_div():
    a = Tensor.randn(30, 40, requires_grad=True).to(Device.GPU)
    b = Tensor.randn(30, 40, requires_grad=True).to(Device.GPU)
    a_torch, b_torch = create_identical_torch_tensor(a, b)

    c = a / b
    c_torch = a_torch / b_torch

    c.backward()
    c_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
    check_val_and_grad(c, c_torch)
示例#2
0
def test_mul_broadcast():
    a = Tensor.randn(3, 1, 3, requires_grad=True)
    b = Tensor.randn(3, 1, 1, requires_grad=True)
    a_torch, b_torch = create_identical_torch_tensor(a, b)

    c = a * b
    c_torch = a_torch * b_torch

    c.backward()
    c_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
    check_val_and_grad(c, c_torch)
示例#3
0
def test_matmul():
    a = Tensor.randn(3, 4, requires_grad=True)
    b = Tensor.randn(4, 2, requires_grad=True)
    a_torch, b_torch = create_identical_torch_tensor(a, b)

    c = a @ b
    c_torch = a_torch @ b_torch

    c.backward()
    c_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
    check_val_and_grad(c, c_torch)
示例#4
0
def test_neg():
    a = Tensor.randn(30, 40, requires_grad=True).to(Device.GPU)
    a_torch = create_identical_torch_tensor(a)

    b = -a
    b_torch = -a_torch

    b.backward()
    b_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
示例#5
0
def test_tanh():
    a = Tensor.randn(20, 20, requires_grad=True)
    a_torch = create_identical_torch_tensor(a)

    b = a.tanh()
    b_torch = a_torch.tanh()

    b.backward()
    b_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
示例#6
0
def test_multiple():
    a = Tensor.randn(2, 3, requires_grad=True)
    b = Tensor.randn(2, 3, requires_grad=True)
    a_torch, b_torch = create_identical_torch_tensor(a, b)

    c = a / b
    c_torch = a_torch / b_torch

    d = a - b
    d_torch = a_torch - b_torch

    e = c + d
    e_torch = c_torch + d_torch

    e.backward()
    e_torch.sum().backward()

    check_val_and_grad(a, a_torch)
    check_val_and_grad(b, b_torch)
    check_val_and_grad(c, c_torch)
    check_val_and_grad(d, d_torch)
    check_val_and_grad(e, e_torch)