コード例 #1
0
def test_simple_creation() -> None:
    tensor = torch.tensor(np.random.rand(3, 2, 3))
    box_tensor = MinDeltaBoxTensor(tensor)
    assert (tensor.data.numpy() == box_tensor.data.numpy()).all()  # type: ignore
    assert isinstance(box_tensor, BoxTensor)
    tensor = torch.tensor(np.random.rand(2, 10))
    box_tensor = MinDeltaBoxTensor(tensor)
    assert (tensor.data.numpy() == box_tensor.data.numpy()).all()  # type: ignore
    assert isinstance(box_tensor, BoxTensor)
コード例 #2
0
def test_shape_validation_during_creation():
    tensor = torch.tensor(np.random.rand(3))
    with pytest.raises(ValueError):
        box_tensor = MinDeltaBoxTensor(tensor)
    tensor = torch.tensor(np.random.rand(3, 11))
    with pytest.raises(ValueError):
        box_tensor = MinDeltaBoxTensor(tensor)
    tensor = torch.tensor(np.random.rand(3, 3, 3))
    with pytest.raises(ValueError):
        box_tensor = MinDeltaBoxTensor(tensor)
コード例 #3
0
def test_round_trip():
    shape = (3, 1, 5)
    minimum_delta = 1.0
    z = torch.tensor(np.random.rand(*shape))
    Z = z + torch.tensor(np.random.rand(*shape)) + minimum_delta
    W = MinDeltaBoxTensor.W(z, Z, minimum_delta=minimum_delta)
    box = MinDeltaBoxTensor(W, minimum_delta=minimum_delta)
    assert box.z.shape == (3, 1, 5)
    assert torch.allclose(box.z, z)
    assert torch.allclose(box.Z, Z)
    assert ((box.Z - box.z) > minimum_delta).all()
コード例 #4
0
def test_creation_from_center(beta, threshold, delta):
    shape = (3, 5)
    c = torch.tensor(np.random.rand(*shape))
    box = MinDeltaBoxTensor.from_center_vector(c,
                                               delta=delta,
                                               beta=beta,
                                               threshold=threshold)
    assert torch.allclose(box.Z, c + delta / 2.0)
    assert torch.allclose(box.z, c - delta / 2.0)
コード例 #5
0
def test_creation_from_zZ():
    shape = (3, 1, 5)
    minimum_delta = 1.0
    z = torch.tensor(np.random.rand(*shape))
    Z = z + torch.tensor(np.random.rand(*shape)) + minimum_delta
    box = MinDeltaBoxTensor.from_zZ(z, Z, minimum_delta=minimum_delta)
    assert box.z.shape == (3, 1, 5)
    assert torch.allclose(box.z, z)
    assert torch.allclose(box.Z, Z)
    assert ((box.Z - box.z) > minimum_delta).all()
コード例 #6
0
def test_creation_from_vector(beta, threshold):
    shape = (3, 1, 5)
    z = torch.tensor(np.random.rand(*shape))
    w_delta = torch.tensor(np.random.rand(*shape))
    v = torch.cat((z, w_delta), dim=-1)
    box = MinDeltaBoxTensor.from_vector(v, beta=beta, threshold=threshold)
    assert box.Z.shape == (3, 1, 5)
    assert torch.allclose(box.z, z)
    assert torch.allclose(
        box.Z,
        z
        + torch.nn.functional.softplus(
            w_delta, beta=beta, threshold=threshold
        ),
    )
コード例 #7
0
def test_creation_from_zZ():
    shape = (3, 1, 5)
    z = torch.tensor(np.random.rand(*shape))
    Z = z + torch.tensor(np.random.rand(*shape))
    box = MinDeltaBoxTensor.from_zZ(z, Z)
    assert box.z.shape == (3, 1, 5)