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

4 篇文章 0 订阅
3 篇文章 0 订阅
本文详细介绍了Pytorch中进行矩阵操作的方法,包括改变形状的Reshape和View,维度交换、压缩与解压,同一维度下位置交换,以及矩阵求和的爱因斯坦求和技巧。此外,还涵盖了矩阵的水平和横向拼接操作。
摘要由CSDN通过智能技术生成

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

4 .图像矩阵操作
4.1 图像下采样
opencv中有函数可以调用来对图像进行下采样操作,
如果用python的话,用一行代码就能搞定。

img_down = img[::2, ::2, :]

这行代码的意思是对img图片的行和列分别缩小1/2
两个冒号加个数字的原身是[start:en d:step],start表示索引的起始位置,end表示结束位置,step表示步长,这里没写就默认是全部

当然,这样写也有缺点,比如

  1. 当行列为奇数时
  2. 下采样之后的图像边缘会产生锯齿状导致图像失真

4.2 BGR to RGB
用opencv读取图片是反常的BGR格式,想转为RGB还得调用它的函数bgr2rgb,下面提供一个方法

img=img[:,:,::-1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值