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

相关推荐
AngelPP3 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年3 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼3 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS3 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区4 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈5 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang5 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk16 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁8 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能