コード例 #1
0
def test_layout():
    "Test basis properties of layout and strides"
    data = [0] * 3 * 5
    tensor_data = minitorch.TensorData(data, (3, 5), (5, 1))

    assert tensor_data.is_contiguous()
    assert tensor_data.shape == (3, 5)
    assert tensor_data.index((1, 0)) == 5
    assert tensor_data.index((1, 2)) == 7

    tensor_data = minitorch.TensorData(data, (5, 3), (1, 5))
    assert tensor_data.shape == (5, 3)
    assert not tensor_data.is_contiguous()

    data = [0] * 4 * 2 * 2
    tensor_data = minitorch.TensorData(data, (4, 2, 2))
    assert tensor_data.strides == (4, 2, 1)
コード例 #2
0
def tensor_data(draw, numbers=floats(), shape=None):
    if shape is None:
        shape = draw(shapes())
    size = int(minitorch.prod(shape))
    data = draw(lists(numbers, min_size=size, max_size=size))
    permute = draw(permutations(range(len(shape))))
    permute_shape = tuple([shape[i] for i in permute])
    reverse_permute = [a[0] for a in sorted(enumerate(permute), key=lambda a: a[1])]
    td = minitorch.TensorData(data, permute_shape)
    ret = td.permute(*reverse_permute)
    assert ret.shape[0] == shape[0]
    return ret
コード例 #3
0
def matmul_tensors(
    draw, numbers=floats(allow_nan=False, min_value=-100, max_value=100)
):

    i, j, k = [draw(integers(min_value=1, max_value=10)) for _ in range(3)]

    l1 = (i, j)
    l2 = (j, k)
    values = []
    for shape in [l1, l2]:
        size = int(minitorch.prod(shape))
        data = draw(lists(numbers, min_size=size, max_size=size))
        values.append(minitorch.Tensor(minitorch.TensorData(data, shape)))
    return values
コード例 #4
0
ファイル: strategies.py プロジェクト: sebffischer/minitorch
def shaped_tensors(
    draw,
    n,
    numbers=floats(allow_nan=False, min_value=-100, max_value=100),
    backend=minitorch.TensorFunctions,
):
    td = draw(tensor_data(numbers))
    values = []
    for i in range(n):
        data = draw(lists(numbers, min_size=td.size, max_size=td.size))
        values.append(
            minitorch.Tensor(minitorch.TensorData(data, td.shape),
                             backend=backend))
    return values
コード例 #5
0
ファイル: strategies.py プロジェクト: sebffischer/minitorch
def tensor_data(draw, numbers=floats(), shape=None):
    if shape is None:
        shape = draw(shapes())
    size = int(minitorch.prod(shape))
    data = draw(lists(numbers, min_size=size, max_size=size))
    return minitorch.TensorData(data, shape)
コード例 #6
0
def test_layout_bad():
    "Test basis properties of layout and strides"
    data = [0] * 3 * 5
    minitorch.TensorData(data, (3, 5), (6, ))