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
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
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)