Initializing a tensor
torch.tensor
torch.from_numpy
Input tensor
torch.ones_like() retain the shape
torch.rand_like() retain the shape
Input the shape
torch.rand()
torch.ones()
torch.zeros()
tensor.attribute
tensor.shape
tensor.dtype
tensor.device
Standard numpy-like indexing and slicing
tensor = torch.ones(4, 4)
print('First row: ', tensor[0])
print('First column: ', tensor[:, 0])
print('Last column:', tensor[..., -1])
tensor[:,1] = 0
print(tensor)
Joining tensors
torch.cat
tensor([[1., 0., 1., 1.], [1., 0., 1., 1.], [1., 0., 1., 1.], [1., 0., 1., 1.]])
t1 = torch.cat([tensor, tensor, tensor], dim=1)
print(t1)
tensor([[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],
[1., 0., 1., 1., 1., 0., 1., 1., 1., 0., 1., 1.]])
Arithmetic Operations
matmul @
mul *
sum +
Single-element tensors If you have a one-element tensor, for example by aggregating all values of a tensor into one value, you can convert it to a Python numerical value using item()
:
agg = tensor.sum()
agg_item = agg.item()
print(agg_item, type(agg_item))
torch.item()
Out:
12.0 <class 'float'>
In-place operations Operations that store the result into the operand are called in-place. They are denoted by a _
suffix. For example: x.copy_(y)
, x.t_()
, will change x
.
print(tensor, "\n")
tensor.add_(5)
print(tensor)
tensor -> numpy
t.numpy()