#创建一个tensor
a=torch.rand(4,3,28,28)
#可以将其理解为4张图片3个维度(RGB)图片大小为28x28
a[0].shape#取第0张图片
#out:torch.Size([3, 28, 28])
a[0,0].shape#第0张图片的第0个通道的size
#out:torch.Size([28, 28])
a[0,0,2,4]
#含义:第0张图片的第0个通道的第2行4列的那个像素点
#是标量
#out:tensor(0.2814)
#取前2张图
a[:2].shape
#前2张图片的第1个通道的shape
a[:2,:1,:,:].shape
#取前2张图片
a[:2,1:,:,:].shape
a[:2,-1:,:,:].shape#-1反方向开始
# 3 2 1
#-1 -2 -3
a[:,:,0:28:2,0:28:2].shape
#隔行采样,区间:0-28,间隔:2
a[:,:,::3,::3].shape
#取全部,隔行采样
a=torch.rand(4,3,28,28)
#先选维度,再选范围
#(第一维度,第几张[0-2张])
#torch.index_select(a, 0, torch.tensor([0, 2]))
a.index_select(0,torch.tensor([0,2])).shape
a[...].shape#取所有
a[0,...].shape#取第一张图片所有的通道和大小
a[:,1,...].shape#取所有图片第一个通道的大小
a[...,:2].shape#取所有图片所有通道的0-2像素大小位置
判断tensor中的值是否符合制定大小返回bool值
#随机创建一个tensor值
x=torch.randn(3,4)
'''tensor([[ 0.6212, 0.6210, -0.7202, 3.2044],
[ 0.5992, -0.4278, 1.6079, 2.0227],
[ 1.2778, 0.8451, -0.6770, -0.6830]])
''''
mask=x.ge(0.5)#>=0.5的元素判断
mask
'''out:
tensor([[ True, True, False, True],
[ True, False, True, True],
[ True, True, False, False]])'''
torch.masked_select(x,mask)#选择出>=0.5的数
#out:tensor([0.6212, 0.6210, 3.2044, 0.5992, 1.6079, 2.0227, 1.2778, 0.8451])
除使用上述方法还可以直接得到
x[x>0.5]
#out:tensor([0.6212, 0.6210, 3.2044, 0.5992, 1.6079, 2.0227, 1.2778, 0.8451])
返回一个新的张量,其中的元素是输入元素在给定的索引处,将输入张量视为视为一维张量。
#返回一个新的张量,其中的元素是输入元素在给定的索引处,将输入张量视为视为一维张量。
torch.take(src,torch.tensor([0,2,5]))