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

相关推荐
老徐聊GEO几秒前
2026年:巧妙引导,让AI回答中自然融入你的品牌
大数据·人工智能·python
Cx330❀2 分钟前
【Linux网络】从零定制应用层协议:黏包问题、全双工缓冲区与 Jsoncpp 序列化深度解析
linux·运维·服务器·开发语言·网络·c++·人工智能
冷小鱼2 分钟前
SAP:从ERP巨头到AI+时代的智能引擎
人工智能
Skrrapper5 分钟前
从 DeepSeek、Qwen 到 GPT:一次企业级 AI 知识库项目的模型选型复盘
人工智能·gpt·算法
未来和明天6 分钟前
领嵌iLeadE-588边缘计算盒子4路AHD、4路千兆网接多个摄像头多路AI视频分析
人工智能·边缘计算
小龙报6 分钟前
用ChatGPT 5.5构建个人写作工作流:从大纲、初稿到风格润色的提示词链
人工智能·神经网络·低代码·自然语言处理·chatgpt·gpt-3·知识图谱
听我哔哔7 分钟前
考研党实测 GPT 刷题解析教程:难题分步讲解,整理笔记一键导出
大数据·人工智能
东坡肘子8 分钟前
WWDC 26:AI 帮你看完了,然后呢?-- 肘子的 Swift 周报 #140
人工智能·swiftui·swift
User_芊芊君子9 分钟前
蓝耘元生代×魔珐星云:我用蓝耘MaaS大模型搭建一款共情具身智能数字人
人工智能·dify·蓝耘
元启数宇12 分钟前
PDF转CAD 3种方法实测:手动描线/AI矢量化/在线工具谁更快更准
人工智能·pdf