| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import unittest
- import numpy as np
- from tinygrad import Tensor, Variable
- class TestTensorVariable(unittest.TestCase):
- def test_add_tvar(self):
- vv = Variable("a", 0, 10)
- vv.bind(1)
- ret = (Tensor(vv) + 3).item()
- assert ret == 4
- def test_inner_tvar_node(self):
- vv = Variable("w", 0, 10)
- vv.bind(2)
- ret = Tensor.from_node(vv * 4).item()
- assert ret == 8
- def test_inner_tvar_mul(self):
- vv = Variable("w", 0, 10)
- vv.bind(2)
- assert (Tensor(3) * vv).item() == 6
- def test_inner_tvar_mul_node(self):
- vv = Variable("w", 0, 10)
- vv.bind(2)
- assert (Tensor(3) * (vv * 4)).item() == 24
- def test_symbolic_mean(self):
- vv = Variable("a", 1, 10).bind(2)
- t = Tensor.ones(2, 2).contiguous().reshape(2, vv)
- ret = t.mean().item()
- assert ret == 1
- def test_symbolic_mean_2d(self):
- vv = Variable("a", 1, 10).bind(2)
- vv2 = Variable("b", 1, 10).bind(2)
- t = Tensor.ones(2, 2).contiguous().reshape(vv2, vv)
- ret = t.mean().item()
- assert ret == 1
- def test_symbolic_mean_2d_axis_1(self):
- vv = Variable("a", 1, 10).bind(2)
- vv2 = Variable("b", 1, 10).bind(2)
- t = Tensor.ones(2, 2).contiguous().reshape(vv2, vv)
- ret = t.mean(axis=1).reshape(2, 1).numpy()
- assert np.all(ret == 1)
- @unittest.expectedFailure
- def test_symbolic_mean_2d_add(self):
- add_term = Variable("c", 0, 10)
- add_term.bind(1)
- vv = Variable("a", 1, 10)
- vv.bind(1)
- vv2 = Variable("b", 1, 10)
- vv2.bind(1)
- t = Tensor.ones(2, 2).contiguous().reshape(vv2+add_term, vv+add_term)
- ret = t.mean().item()
- assert ret == 1
- def test_symbolic_var(self):
- vv = Variable("a", 1, 10).bind(2)
- t = Tensor.ones(2, 2).contiguous().reshape(2, vv)
- ret = t.var().item()
- assert ret == 0
- @unittest.skip("symbolic arange isn't supported")
- def test_symbolic_arange(self):
- vv = Variable("a", 1, 10)
- vv.bind(2)
- ret = Tensor.arange(0, vv)
- ret.realize()
- if __name__ == '__main__':
- unittest.main()
|