Pytorch矩阵操作——维度变换,求和

Pytorch矩阵操作基本都能用以下方法(组合)实现

1 . 改变形状

1.1 Reshape

A= torch.zeros((2, 4)) #形状为2*4
A = A.reshape(2,2,2) #形状变为2*2*2

1.2 View
与Reashape功能相同

A= torch.zeros((2, 4)) #形状为2*4
A = A.View(2,2,2) #形状变为2*2*2

2 .维度变换
2.1 维度交换

A= torch.zeros((2, 4)) #形状为2*4
A = A.permute(1,0) #形状变为4*2,第一维度与第二维度交换位置

2.2 维度压缩/解压

A= torch.zeros((2, 4)) #形状为2*4
A = A..unsqueeze(-1) #形状变为2*4*1,在最后面增加一个维度
A = torch.squeezw(A) #形状变为2*4,维度大小为1的被压缩

2.3 同一维度下指定位置交换

A= torch.tensor([1, 3, 5],[2, 4, 6]) #形状为2*3
A = A[[1,0],:] #形状为2*3,第一行与第二行交换位置

3 .矩阵求和
3.1 爱因斯坦求和
对指定维度求和

A= torch.zeros((2, 4)) #形状为2*4
B= torch.zeros((2, 4)) #形状为2*4
sum = torch.einsum("bs,bs->b",A,B) #形状为2,第二个维度做内积求和操作

4 .矩阵拼接
4.1 水平拼接

A= torch.zeros((2, 4)) #形状为2*4
B= torch.zeros((2, 4)) #形状为2*4
C= torch.vstack((a, b)) #形状为4*4

4.2 横向拼接

A= torch.zeros((2, 4)) #形状为2*4
B= torch.zeros((2, 4)) #形状为2*4
C= torch.hstack((a, b)) #形状为2*8

你可能感兴趣的:(算法,笔记,机器学习,pytorch,深度学习,神经网络)