VIT中的einops包详解

'''einops有三个常用方法:rearrange,repeat,reduce'''

rearrange的操作相当于转置

rearrange(image,'h w c -> w h c') 高和宽转置

python 复制代码
path = '../data/cat_and_mouse.jpg'
image = cv2.imread(path)
h,w,c = image.shape # shape第一个值是h,第二个是w
image = cv2.resize(image,(w*2,h*2)) #resize处(w,h)
print(image.shape)
cv2.imshow('image',image)
cv2.waitKey()
cv2.destroyAllWindows()

原图(h,w,c) = (281,500,3) 为了后面将图片一分为2的操作,把图片尺寸放大两倍:

(h2,w 2,c) = (562,1000,3)

python 复制代码
# 1.变换 h,w,c的位置: 如把h,w,c 变成 w,h,c
image_wh = rearrange(image,'h w c -> w h c')
print(image_wh.shape)
cv2.imshow('image_wh',image_wh)
cv2.imwrite('../data/cat_and_mouse_new.jpg',image_wh)
cv2.waitKey()
cv2.destroyAllWindows()

(h,w,c) = (1000,562,3)

image = rearrange(image,'h (a w) c -> w (a h) c',a=2) 是将宽一分为2,变成两个图片,然后两个图片分别转置

h (2 w) c = (562,2x500,3)是把图片的按宽的方向一分为2,变成两个图片。w原来是1000,(2 w) 将w变成500。

将一分为2的两个图片转置。由(h,2w,c) = (562,2x500,3)变成 w, (2 h) c = (500,562,3) 拼接 (500,562,3) = (500,562x2,3)

repeat操作

repeat是指定张量在哪个维度上复制。

csharp 复制代码
image = repeat(image, 'h w c -> h (repeat w) c', repeat=2)

如在宽上复制:

reduce操作

详见:

https://www.cnblogs.com/c-chenbin/p/15375637.html

相关推荐
QuZhengRong3 分钟前
【News】2026.10.09–10.15 AI 科技周报
人工智能·科技·openai·苹果·新闻
console.log('npc')12 分钟前
[特殊字符] AI Agent 工作台前端实战教程 · 新手入门指南
前端·人工智能
温温top13 分钟前
AnythingLLM+deepseek+RAG知识库实现AI客服
人工智能
果霸大叔22 分钟前
AI 网关第 10 篇:协议无关层——一个请求如何被认出、翻译、透传
人工智能
adinnet202622 分钟前
企业碳资产管理:从碳盘查到碳交易,把排放理清
人工智能·深度学习·自动化
林墨聊AIGC23 分钟前
AI分镜模板:一键生成高效短剧视觉流程
人工智能·ai作画·aigc·音视频·ai写作
Pocker_Spades_A23 分钟前
论文精读(十):面向具身人工智能的物体目标导航综述:从“找东西“到启元机器人的导航基础能力
人工智能·机器人
whyutianict_vv24 分钟前
AI 大模型技术架构解析:从推理链路到训练流程
人工智能·ai·架构·开发
一根会思考芦苇25 分钟前
王阳明五百年前的知行合一,能解决今天的 AI 对齐难题吗?
人工智能
方方洛25 分钟前
ai-agent教程-12-生产部署
人工智能·llm·agent