设三维张量的shape是x、y、z,则可理解为它是由x个二维张量构成,每个二维张量由y个一维张量构成,每个一维张量由z个标量构成。
三种颜色分别代表三个维度.
import torch
torch.manual_seed(seed=20200910)
a = torch.randn(3,4,5)
mask = a > 1.5
print(mask)
print(mask[0,:]) # 索引第0个矩阵
print(mask[:, :, 0]) # 索引每个矩阵,取得每行中的第1个元素.即每个矩阵的第1列
print(mask[:, 0, :]) # 索引每个矩阵,取得每列中的第1个元素.即每个矩阵的第1行
print(mask[1, 1, 1]) # 索引第二个矩阵的第一行,第二个元素
print(mask[1, ::2, ::2]) # 索引第二个矩阵,行和列都是每隔两个取一个
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>>mask[0,:]:# 索引第0个矩阵
tensor([[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]])
========================================================================================================
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>>mask[:, :, 0] # 索引每个矩阵,取得每行中的第1个元素.即每个矩阵的第1列
tensor([[False, False, False, False],
[False, False, False, False],
[True, False, False, False]])
========================================================================================================
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>>mask[:, 0, :] # 索引每个矩阵,取得每列中的第1个元素.即每个矩阵的第1行
tensor([[False, True, True, False, False],
[False, False, False, False, False],
[True, False, False, False, False]])
>>> mask[1, 1, 1] # 索引第二个矩阵的第一行,第二个元素
tensor(False)
>>> mask[1, ::2, ::2] # 索引第二个矩阵,行和列都是每隔两个取一个
tensor([[False, False, False],
[False, False, True]])
print(mask.sum(dim=0,keepdim=True))
print(mask.sum(dim=1,keepdim=True))
print(mask.sum(dim=2,keepdim=True))
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>> mask.sum(dim=0,keepdim=True)
tensor([[[1, 1, 1, 0, 0],
[0, 0, 0, 0, 1],
[0, 0, 1, 1, 1],
[0, 1, 0, 0, 0]]])
========================================================================================================
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>> mask.sum(dim=1,keepdim=True)
tensor([[[0, 2, 2, 0, 1]],
[[0, 0, 0, 1, 1]],
[[1, 0, 0, 0, 0]]])
========================================================================================================
>>>mask:
tensor([[[False, True, True, False, False],
[False, False, False, False, True],
[False, False, True, False, False],
[False, True, False, False, False]],
[[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, True, True],
[False, False, False, False, False]],
[[ True, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]]])
>>> mask.sum(dim=2,keepdim=True)
tensor([[[2],
[1],
[1],
[1]],
[[0],
[0],
[2],
[0]],
[[1],
[0],
[0],
[0]]])