文章来自于翻译https://pytorch.org/docs/stable/tensors.html,想自己学习,可以参考原文
1.torch.tensor 是一个包含一种数据的多维矩阵。
2.new_full
(size, fill_value, dtype=None, device=None, requires_grad=False) → Tensor
Returns a Tensor of size size
filled with fill_value
. By default, the returned Tensor has the same torch.dtype
and torch.device
as this tensor.
3.new_tensor
(data, dtype=None, device=None, requires_grad=False) → Tensor
Returns a new Tensor with data
as the tensor data. By default, the returned Tensor has the same torch.dtype
and torch.device
as this tensor.
new_tensor()
always copies data
. If you have a Tensor data
and want to avoid a copy, use torch.Tensor.requires_grad_()
or torch.Tensor.detach()
. If you have a numpy array and want to avoid a copy, use torch.from_numpy()
.
4.reshape
(*shape) → Tensor
Returns a tensor with the same data and number of elements as self
but with the specified shape. This method returns a view if shape
is compatible with the current shape. See torch.Tensor.view()
on when it is possible to return a view.
5.reshape_as
(other) → Tensor
Returns this tensor as the same shape as other
. self.reshape_as(other)
is equivalent to self.reshape(other.sizes())
. This method returns a view if other.sizes()
is compatible with the current shape. See torch.Tensor.view()
on when it is possible to return a view.
6.scatter_add_
(dim, index, other) → Tensor
Adds all values from the tensor other
into self
at the indices specified in the index
tensor in a similar fashion as scatter_()
. For each value in other
, it is added to an index in self
which is specified by its index in other
for dimension != dim
and by the corresponding value in index
for dimension = dim
.
For a 3-D tensor, self
is updated as:
self[index[i][j][k]][j][k] += other[i][j][k] # if dim == 0 self[i][index[i][j][k]][k] += other[i][j][k] # if dim == 1 self[i][j][index[i][j][k]] += other[i][j][k] # if dim == 2
示例如下: >>> x = torch.rand(2, 5) >>> x tensor([[0.7404, 0.0427, 0.6480, 0.3806, 0.8328], [0.7953, 0.2009, 0.9154, 0.6782, 0.9620]]) >>> torch.ones(3, 5).scatter_add_(0, torch.tensor([[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]]), x) tensor([[1.7404, 1.2009, 1.9154, 1.3806, 1.8328], [1.0000, 1.0427, 1.0000, 1.6782, 1.0000], [1.7953, 1.0000, 1.6480, 1.0000, 1.9620]])
7.to
(*args, **kwargs) → Tensor
Performs Tensor dtype and/or device conversion
转数据类型,和cpu,gpu切换.
>>> tensor = torch.randn(2, 2) # Initially dtype=float32, device=cpu >>> tensor.to(torch.float64) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64) >>> cuda0 = torch.device('cuda:0') >>> tensor.to(cuda0) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], device='cuda:0') >>> tensor.to(cuda0, dtype=torch.float64) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0') >>> other = torch.randn((), dtype=torch.float64, device=cuda0) >>> tensor.to(other, non_blocking=True) tensor([[-0.5044, 0.0005], [ 0.3310, -0.0584]], dtype=torch.float64, device='cuda:0')
8.view
(*shape) → Tensor
Returns a new tensor with the same data as the self
tensor but of a different shape
.
The returned tensor shares the same data and must have the same number of elements, but may have a different size. For a tensor to be viewed, the new view size must be compatible with its original size and stride
改变底层数据
>>> x = torch.randn(4, 4) >>> x.size() torch.Size([4, 4]) >>> y = x.view(16) >>> y.size() torch.Size([16]) >>> z = x.view(-1, 8) # the size -1 is inferred from other dimensions >>> z.size() torch.Size([2, 8])
9.all
() → bool
Returns True if all elements in the tensor are non-zero, False otherwise.