码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • VIT中的einops包详解


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

    rearrange的操作相当于转置

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

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    原图(h,w,c) = (281,500,3) 为了后面将图片一分为2的操作,把图片尺寸放大两倍:
    (h2,w2,c) = (562,1000,3)
    在这里插入图片描述

    # 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (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是指定张量在哪个维度上复制。

    image = repeat(image, 'h w c -> h (repeat w) c', repeat=2)
    
    • 1

    如在宽上复制:
    在这里插入图片描述

    reduce操作

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

  • 相关阅读:
    洛谷P1271 【深基9.例1】选举学生会
    竞赛 深度学习+python+opencv实现动物识别 - 图像识别
    01下班后一小时| 《JavaScript 悟道》 读书笔记
    Java 静态代理和动态代理
    Frequently used Docker commands on Ubuntu
    Python下划线中 _xx、__xx、__xx__ 的区别
    ChatGPT学习第三周
    命令模式(command)
    DQL数据查询语句之ORDER BY排序查询示例
    2022河南萌新联赛第(七)场:南阳理工学院 H-防风台
  • 原文地址:https://blog.csdn.net/qq_42864343/article/details/132730779
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号