pytorch笔记

repeat函数

x = torch.arange(20).view(1,4,5)
print(x)

对每一个维度重复几遍

t = x.repeat(2,1,1)
print(t)

对每一个维度扩展找几维

只能将元素个数为1的维度继续扩展

t1 = x.expand(2,4,5)
print(t1)

cat和chunk

x1 = torch.randn(2,5)
x2 = torch.randn(2,5)
x = torch.cat((x1,x2),dim=0)
print(x)
print(torch.chunk(x,2,0))

print(x)

max函数返回的是一个“元组”,(最大值,最大值所在位置)

x1 = x.max(dim=0)
x2 = torch.max(x,dim=1)
print(x)
print(x1[0])
print(x2)

切片和双重切片

a = torch.arange(24).view(2,12)
b = a[:, 0] # tensor([ 0, 12])
c = a[:, 0::3] # 从index0进行切片,每3个数取一个数
print(a)
print(b)
print©

a = torch.arange(15).view(3,5)
print(a)

index数组的条件:

1.a是几维数组,index就得是几维的,且返回的结果的shape和index的shape一致

2.index里面的元素的数值不能超过a指定的dim的最大值(index的值就是a指定维度的下标)

3.index的shape[1]不能超过a.shape[1]

其实没有那么复杂,就是按照index的位置去取值,index有几行,代表取几次。对于每一行的元素,元素的值和元素的位置唯一决定了要取的位置

b = a.gather(0,torch.LongTensor([[0,1,2,1],[2,0,1,0]]))
print(b)
b = a.gather(0,torch.LongTensor([[0],[1],[2]]))
print(b)

dim为1,那么index数值代表的是取a的第value列,那么index元素本身所在的行就是要取的行

c = a.gather(1,torch.LongTensor([[0,3,4],[4,3,2]]))
print©

split(感觉和chunk很像)

a = torch.arange(24).view(2,3,4)
print("*"100)
print(“a:”)
print(a) # [2,3,4]
b = torch.split(a,1,dim=1) # 注意这里的第二个参数是块的大小而不是块的数量
print("
"100)
print(“b:”)
print(b) # 3片 * [2,1,4]
c = torch.cat(b,dim=1)
print("
"100)
print(“c:”)
print© # [2,3,4]
print(c.shape)
d = torch.stack(b) # 把b这个元组堆起来,并增加一个维度,默认增加0维
print("
100)
print(“d:”)
print(d)
print(d.shape) # [3,2,1,4]
e = torch.squeeze(d)
print("
”*100)
print(e)
print(e.shape) # [3,2,4]

permute(维度变换,交换维度,原来在一块的数字换了在一块的维度)

a = torch.arange(24).view(2,3,4)
print(a)
c = torch.permute(a,[2,0,1])
print©
a = torch.arange(12).view(3,4)
print(a)
d = torch.transpose(a,1,0) # transpose好像就两维,感觉和转置一样
print(d)
e = torch.reshape(a,[4,3]) # reshape是按照所有元素的先后顺序重排
print(e)
f = a.contiguous()
print(f)

contiguous把tensor数值连续化

a = torch.arange(12).view(3,4)
print(a)
b = torch.transpose(a,1,0)
print(b)

明明b是(4,3)的数组,view成(2,6)就会报错!!!这是因为view它只是提供了一个视图,并没有对源tensor进行复制修改

c = b.view(2,6)

b = b.contiguous()
c = b.view(2,6)
print©

你可能感兴趣的:(pytorch,python,深度学习)