栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[pytorch] 爱因斯坦标示法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[pytorch] 爱因斯坦标示法

使用einops库的这几个函数,可以有效地替代pytorch中的一些形状变换的操作。

import torch
from einops import rearrange,reduce,repeat

x = torch.randn(2,3,4,5)
# 1 transpose
out1 = x.transpose(1,2)
out2 = rearrange(x,'b i h w ->b h i w')

# 2 reshape
out1 = x.reshape(-1,4,5)
out2 = rearrange(x,'b i h w->(b i) h w')

out3 = rearrange(out2,'(b i) h w -> b i h w',b=2)  # b=2 
flag = torch.allclose(out3,x)
print(flag)




还可以应用在Transformer模型的img2patch中:

# img2patch
x = torch.randn(2,3,224,224)
out1 = rearrange(x,'b i (h1 p1) (w1 p2)-> b  i (h1 w1) (p1 p2)',p1=16,p2=16)  # p length of patch
print(out1.shape)
out2 = rearrange(out1,'b i n a -> b n (a i)')  # [b,num_patch,patch_depth]
out2.shape
# flag = torch.allclose(out1,out2)
# flag

池化操作:

out1 = reduce(x,'b i h w -> b i h','mean') # avg pool
out2 = reduce(x,'b i h w -> b i h 1','sum')  # keep dimension
out3 = reduce(x,'b i h w-> b i','max')
out3

最后是repate操作

# repeat
out1 = rearrange(x,'b i h w -> b i h w 1') #extend dim  torch.unsqueeze
# print(out1)
out2 = repeat(out1,'b i h w 1 -> b i h w 2') # torch.tile

out3 = repeat(x,'b i h w -> b i (2 h) (2 w)')
out3.shape

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号