IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python einops张量操作工具包 -> 正文阅读

[Python知识库]python einops张量操作工具包

eniops是python提供的一个对张量维度进行随心所欲操作的包,具有十分强大的功能,下面就让我们来见识一下eniops的强大表达能力。

rearrange

具有交换张量维度的功能,下面的例子将C,H,W方式存储的图片转化为H,W,C的存储方式

import torch
from einops import rearrange

x=torch.rand((10,3,224,224))
print(x.size())

x = rearrange(x, 'b c h w ->b h w c') # 
print(x.size())

合并维度,下面的例子将H,W两个维度合并,即转化为一维向量

x=torch.rand((10,3,224,224))
print(x.size())

x = rearrange(x, 'b c h w ->b c (h w)') #
print(x.size())

合并batch,h,w维度

x=torch.rand((10,3,224,224))
print(x.size())

x = rearrange(x, 'b c h w ->c (b h w)') #
print(x.size())

?

对指定维度进行拆分,下面的例子将Batch维度进一步拆分为5x2

x = rearrange(x, '(b1 b2) c h w ->b1 b2 c h w',b2=2) #
print(x.size())

?Reduce

对指定维度求均值

from einops import reduce
x=torch.rand((10,3,224,224))
print(x.size())

x = reduce(x, 'b c h w -> b h w', reduction='mean')
print(x.size())

进行2x2平均池化

x=torch.rand((10,3,224,224))
print(x.size())

x =  reduce(x, 'b c (h h2) (w w2) -> b c h w', reduction='mean', h2=2, w2=2) # h 和 w 变小,实现2 x 2 的均值池化
print(x.size())

?全局最大池化

from einops import reduce
x=torch.rand((10,3,224,224))
print(x.size())

x =  reduce(x, 'b c h w -> b c ', reduction='max') # 
print(x.size())

?Repeat

在一个维度上进行拷贝

from einops import repeat
x=torch.rand((10,3,224,224))
print(x.size())

x =  repeat(x, 'b c h w -> r b c h w', r=100)# copy along a new axis
print(x.size())

其他

增加一个维度

x=torch.rand((10,3,224,224))
print(x.size())

x =  rearrange(x, 'b c h w -> 1 b c h w')#
print(x.size())

减少一个维度

x=torch.rand((10,1,3,224,224))
print(x.size())

x =  rearrange(x, 'b 1 c h w -> b c h w')#
print(x.size())

?

求最大值但保留维度

x=torch.rand((10,3,224,224))
print(x.size())

x =  reduce(x, 'b c h w -> b c () ()','max')#
print(x.size())

flatten展开

from einops import rearrange
from einops import reduce
from einops import repeat
x=torch.rand((10,3,224,224))
print(x.size())

x =  rearrange(x, 'b c h w -> (b c h w)')#
print(x.size())

patch?

将图片分为16x16的patch,共14x14=196个

from einops import rearrange
from einops import reduce
from einops import repeat
x=torch.rand((10,3,224,224))
print(x.size())

x =  rearrange(x, 'b c (h hp) (w wp) -> b c (h w) hp wp',hp=16,wp=16)#
print(x.size())

总结

  • rearrange?仅仅只是改变Tensor的size,相关操比如:transpose,?reshape,?stack,?concatenate,?squeeze?and?expand_dims;

  • reduce操作的对象是张量的维度,或者维度的顺序,值,比如:?mean,?min,?max,?sum,?prod

  • repeat?执行的是复制之类的操作

  • composition and decomposition of axes are a corner stone, they can and should be used together

参考链接

https://zhuanlan.zhihu.com/p/372692913

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:24:46  更:2021-08-31 15:26:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:04:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码