#张量的相关操作##加法
y = torch.randn(4,3)
x = torch.randn(4,3)# print(x+y)#方式1# print(torch.add(x,y))#方式2# print(y.add(x))#方式3##索引 --与numpy基本一致# print(x[:,1])##维度转换 view与reshape
x = torch.randn(4,4)
y = x.view(16)#4*4变为1*16 会改变原始张量 reshape不会改变但不能保证输出是拷贝值
z = x.view(-1,8)#-1代表这一维的维数由其他维度决定 此处为2*8###不影响原始张量
x = torch.randn(4,4)
x2 = x.clone()print(id(x),id(x2))#克隆副本### squzee与unsqueeze 删去维数为1的维度/给指定位置增加维数为1的维度
x = torch.unsqueeze(x,2)#指定位置添加维数为1的维度
x = torch.unsqueeze(x,1)print(x.shape)
x = torch.squeeze(x,1)#去掉指定位置维数为1的维度,不指定位置则全去除print(x.shape)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
tensor广播机制
#广播机制##两个形状不同的tensor按元素运算时,“可能”触发广播机制# x = torch.arange(1,5)# y = torch.arange(1,9).view(4,2)#这样是不会触发的# print(x)# print(x+y)
x = torch.arange(1,3).view(1,2)print(x)
y = torch.arange(1,4).view(3,1)print(y)print(x + y)#这样可以