def test_iloc(self):
     torch.manual_seed(123)
     a = [torch.randn((i, j)) for i, j in [(5, 3), (5, 2)]]
     a = tuplefy(a, torch.randint(10, (5, )))
     b = tuplefy((a[0][0][:2], a[0][1][:2]), a[1][:2])
     a = a.iloc[:2]
     assert_tupletree_equal(a, b)
 def test_stack_shapes(self):
     torch.manual_seed(123)
     a = [torch.randn((i, j)) for i, j in [(5, 3), (5, 2)]]
     a = tuplefy(a, torch.randint(10, (5, )))
     b = tuplefy((torch.Size([3, 5, 3]), torch.Size([3, 5, 2])),
                 torch.Size([3, 5]))
     assert_tupletree_equal(a.repeat(3).stack().shapes(), b)
示例#3
0
def test_dataloader_input_only():
    n = 10
    input = tuplefy(torch.randn(n, 3), torch.randn(n, 2))
    target = torch.randn(n)
    dl = tuplefy(input, target).make_dataloader(4, False)
    dl_input = dataloader_input_only(dl)
    for (inp, tar), inp2 in zip(dl, dl_input):
        assert_tupletree_equal(inp, inp2)
def test_make_data_loader_sorted(batch_size, num_workers):
    torch.manual_seed(123)
    a = tuplefy(torch.randn(10, 3), torch.randn(10))
    dl = make_dataloader(a, batch_size, False, num_workers)
    b = tuplefy()
    for inp, tar in dl:
        b = b + tuplefy(inp, tar).add_root()
    assert_tupletree_equal(b.cat(), a)
 def test_np2torch2np(self):
     np.random.seed(123)
     a = [
         np.random.normal(size=(i, j)).astype('float32')
         for i, j in [(2, 3), (1, 2)]
     ]
     a = tuplefy(a, np.random.choice(10, size=(4, )))
     b = a.to_tensor().to_numpy()
     assert_tupletree_equal(a, b)
示例#6
0
 def test_next_iter(self, batch_size, num_workers):
     torch.manual_seed(123)
     n = 20
     a = ((torch.randn(n, 3), torch.randint(200, (n, 2))), torch.randn(n))
     a = tuplefy(a)
     ds = DatasetTuple(*a)
     dl = DataLoaderBatch(ds, batch_size, False, num_workers=num_workers)
     a = a.iloc[:batch_size]
     b = next(iter(dl))
     assert_tupletree_equal(a, b)
def test_make_data_loader_unsorted(batch_size, num_workers):
    torch.manual_seed(123)
    a = tuplefy(torch.randn(10, 3), torch.randn(10))
    dl = make_dataloader(a, batch_size, True, num_workers)
    b = tuplefy()
    for inp, tar in dl:
        b = b + tuplefy(inp, tar).add_root()
    b = b.cat()
    assert_tupletree_equal(b.shapes(), a.shapes())
    assert (tuplefy(a, b).apply(sum).zip_leaf().apply(
        lambda x: x[0] - x[1]).apply(lambda x: x.max()).pipe(max) < 1e-6)
示例#8
0
 def test_step_with_model(self, optim_class):
     torch.manual_seed(1234)
     inp, tar = torch.randn(10, 3), torch.randn(10, 1)
     net = torch.nn.Linear(3, 1)
     model = Model(net, torch.nn.MSELoss(), optim_class(lr=0.1))
     params = get_params(net)
     model.fit(inp, tar, verbose=False)
     new_params = get_params(net)
     with pytest.raises(AssertionError) as ex:
         assert_tupletree_equal(params, new_params)
     assert str(ex.value) == "Not equal values"
示例#9
0
 def test_step(self, optimizer_class):
     torch.manual_seed(1234)
     net = torch.nn.Linear(5, 1)
     optimizer = optimizer_class(net.parameters(), lr=0.1)
     op = optim.OptimWrap(optimizer)
     op.zero_grad()
     params = get_params(net)
     inp = torch.randn(10, 5)
     net(inp).mean().backward()
     op.step()
     new_params = get_params(net)
     with pytest.raises(AssertionError) as ex:
         assert_tupletree_equal(params, new_params)
     assert str(ex.value) == "Not equal values"
示例#10
0
 def test_getitem(self):
     torch.manual_seed(123)
     n = 10
     a = ((torch.randn(n, 3), torch.randint(200, (n, 2))), torch.randn(n))
     ds = DatasetTuple(*a)
     assert_tupletree_equal(ds[0], ds[[0]])
     assert_tupletree_equal(ds[0], ds[:1])
     assert_tupletree_equal(ds[2:5], ds[[2, 3, 4]])
示例#11
0
def test_assert_tupletree_equal_pass(a, b, check_dtypes):
    assert_tupletree_equal(a, b, check_dtypes)
示例#12
0
def test_assert_tupletree_equal_fails(a, b, ex_string):
    with pytest.raises(AssertionError) as ex:
        assert_tupletree_equal(a, b)
    assert str(ex.value) == ex_string
示例#13
0
 def test_cat_split(self):
     torch.manual_seed(123)
     a = [torch.randn((i, j)) for i, j in [(5, 3), (5, 2)]]
     a = tuplefy(a, torch.randint(10, (5, )))
     for sub in a.repeat(3).cat().split(5):
         assert_tupletree_equal(a, sub)
示例#14
0
 def test_torch2np2torch(self):
     torch.manual_seed(123)
     a = [torch.randn((i, j)) for i, j in [(2, 3), (1, 2)]]
     a = tuplefy(a, torch.randint(10, (4, )))
     b = a.to_numpy().to_tensor()
     assert_tupletree_equal(a, b)