예제 #1
0
파일: tensor.py 프로젝트: ordabayevy/funsor
def eager_stack_homogeneous(name, *parts):
    assert parts
    output = parts[0].output
    part_inputs = OrderedDict()
    for part in parts:
        assert part.output == output
        assert name not in part.inputs
        part_inputs.update(part.inputs)

    shape = tuple(d.size for d in part_inputs.values()) + output.shape
    data = ops.stack(
        0, *[
            ops.expand(align_tensor(part_inputs, part), shape)
            for part in parts
        ])
    inputs = OrderedDict([(name, Bint[len(parts)])])
    inputs.update(part_inputs)
    return Tensor(data, inputs, dtype=output.dtype)
예제 #2
0
def test_tensor_stack(n, shape, dim):
    tensors = [randn(shape) for _ in range(n)]
    actual = stack(tuple(Tensor(t) for t in tensors), dim=dim)
    expected = Tensor(ops.stack(dim, *tensors))
    assert_close(actual, expected)