当前位置: 首页 > news >正文

einops测试

文章目录

  • 1. einops
  • 2. code
  • 3. pytorch

1. einops

einops 主要是通过爱因斯坦标记法来处理张量矩阵的库,让矩阵处理上非常简单。

  • conda :
conda install conda-forge::einops
  • python:

2. code

import torch
import torch.nn as nn
import torch.nn.functional as F
from einops import rearrange, repeat, reducetorch.set_printoptions(precision=3, sci_mode=False)if __name__ == "__main__":run_code = 0x = torch.arange(96).reshape((2, 3, 4, 4)).to(torch.float32)print(f"x.shape={x.shape}")print(f"x=\n{x}")# 1. 转置x_torch_trans = x.transpose(1, 2)x_einops_trans = rearrange(x, 'b i w h -> b w i h')x_check_trans = torch.allclose(x_torch_trans, x_einops_trans)print(f"x_torch_trans is {x_check_trans} same with x_einops_trans")# 2. 变形x_torch_reshape = x.reshape(6, 4, 4)x_einops_reshape = rearrange(x, 'b i w h -> (b i) w h')x_check_reshape = torch.allclose(x_torch_reshape, x_einops_reshape)print(f"x_einops_reshape is {x_check_reshape} same with x_check_reshape")# 3. image2patchimage2patch = rearrange(x, 'b i (h1 p1) (w1 p2) -> b i (h1 w1) p1 p2', p1=2, p2=2)print(f"image2patch.shape={image2patch.shape}")print(f"image2patch=\n{image2patch}")image2patch2 = rearrange(image2patch, 'b i j h w -> b (i j) h w')print(f"image2patch2.shape={image2patch2.shape}")print(f"image2patch2=\n{image2patch2}")y = torch.arange(24).reshape((2, 3, 4)).to(torch.float32)y_einops_mean = reduce(y, 'b h w -> b h', 'mean')print(f"y=\n{y}")print(f"y_einops_mean=\n{y_einops_mean}")y_tensor = torch.arange(24).reshape(2, 2, 2, 3)y_list = [y_tensor, y_tensor, y_tensor]y_output = rearrange(y_list, 'n b i h w -> n b i h w')print(f"y_tensor=\n{y_tensor}")print(f"y_output=\n{y_output}")z_tensor = torch.arange(12).reshape(2, 2, 3).to(torch.float32)z_tensor_1 = rearrange(z_tensor, 'b h w -> b h w 1')print(f"z_tensor=\n{z_tensor}")print(f"z_tensor_1=\n{z_tensor_1}")z_tensor_2 = repeat(z_tensor_1, 'b h w 1 -> b h w 2')print(f"z_tensor_2=\n{z_tensor_2}")z_tensor_repeat = repeat(z_tensor, 'b h w -> b (2 h) (2 w)')print(f"z_tensor_repeat=\n{z_tensor_repeat}")
  • python:
x.shape=torch.Size([2, 3, 4, 4])
x=
tensor([[[[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.],[12., 13., 14., 15.]],[[16., 17., 18., 19.],[20., 21., 22., 23.],[24., 25., 26., 27.],[28., 29., 30., 31.]],[[32., 33., 34., 35.],[36., 37., 38., 39.],[40., 41., 42., 43.],[44., 45., 46., 47.]]],[[[48., 49., 50., 51.],[52., 53., 54., 55.],[56., 57., 58., 59.],[60., 61., 62., 63.]],[[64., 65., 66., 67.],[68., 69., 70., 71.],[72., 73., 74., 75.],[76., 77., 78., 79.]],[[80., 81., 82., 83.],[84., 85., 86., 87.],[88., 89., 90., 91.],[92., 93., 94., 95.]]]])
x_torch_trans is True same with x_einops_trans
x_einops_reshape is True same with x_check_reshape
image2patch.shape=torch.Size([2, 3, 4, 2, 2])
image2patch=
tensor([[[[[ 0.,  1.],[ 4.,  5.]],[[ 2.,  3.],[ 6.,  7.]],[[ 8.,  9.],[12., 13.]],[[10., 11.],[14., 15.]]],[[[16., 17.],[20., 21.]],[[18., 19.],[22., 23.]],[[24., 25.],[28., 29.]],[[26., 27.],[30., 31.]]],[[[32., 33.],[36., 37.]],[[34., 35.],[38., 39.]],[[40., 41.],[44., 45.]],[[42., 43.],[46., 47.]]]],[[[[48., 49.],[52., 53.]],[[50., 51.],[54., 55.]],[[56., 57.],[60., 61.]],[[58., 59.],[62., 63.]]],[[[64., 65.],[68., 69.]],[[66., 67.],[70., 71.]],[[72., 73.],[76., 77.]],[[74., 75.],[78., 79.]]],[[[80., 81.],[84., 85.]],[[82., 83.],[86., 87.]],[[88., 89.],[92., 93.]],[[90., 91.],[94., 95.]]]]])
image2patch2.shape=torch.Size([2, 12, 2, 2])
image2patch2=
tensor([[[[ 0.,  1.],[ 4.,  5.]],[[ 2.,  3.],[ 6.,  7.]],[[ 8.,  9.],[12., 13.]],[[10., 11.],[14., 15.]],[[16., 17.],[20., 21.]],[[18., 19.],[22., 23.]],[[24., 25.],[28., 29.]],[[26., 27.],[30., 31.]],[[32., 33.],[36., 37.]],[[34., 35.],[38., 39.]],[[40., 41.],[44., 45.]],[[42., 43.],[46., 47.]]],[[[48., 49.],[52., 53.]],[[50., 51.],[54., 55.]],[[56., 57.],[60., 61.]],[[58., 59.],[62., 63.]],[[64., 65.],[68., 69.]],[[66., 67.],[70., 71.]],[[72., 73.],[76., 77.]],[[74., 75.],[78., 79.]],[[80., 81.],[84., 85.]],[[82., 83.],[86., 87.]],[[88., 89.],[92., 93.]],[[90., 91.],[94., 95.]]]])
y=
tensor([[[ 0.,  1.,  2.,  3.],[ 4.,  5.,  6.,  7.],[ 8.,  9., 10., 11.]],[[12., 13., 14., 15.],[16., 17., 18., 19.],[20., 21., 22., 23.]]])
y_einops_mean=
tensor([[ 1.500,  5.500,  9.500],[13.500, 17.500, 21.500]])
y_tensor=
tensor([[[[ 0,  1,  2],[ 3,  4,  5]],[[ 6,  7,  8],[ 9, 10, 11]]],[[[12, 13, 14],[15, 16, 17]],[[18, 19, 20],[21, 22, 23]]]])
y_output=
tensor([[[[[ 0,  1,  2],[ 3,  4,  5]],[[ 6,  7,  8],[ 9, 10, 11]]],[[[12, 13, 14],[15, 16, 17]],[[18, 19, 20],[21, 22, 23]]]],[[[[ 0,  1,  2],[ 3,  4,  5]],[[ 6,  7,  8],[ 9, 10, 11]]],[[[12, 13, 14],[15, 16, 17]],[[18, 19, 20],[21, 22, 23]]]],[[[[ 0,  1,  2],[ 3,  4,  5]],[[ 6,  7,  8],[ 9, 10, 11]]],[[[12, 13, 14],[15, 16, 17]],[[18, 19, 20],[21, 22, 23]]]]])
z_tensor=
tensor([[[ 0.,  1.,  2.],[ 3.,  4.,  5.]],[[ 6.,  7.,  8.],[ 9., 10., 11.]]])
z_tensor_1=
tensor([[[[ 0.],[ 1.],[ 2.]],[[ 3.],[ 4.],[ 5.]]],[[[ 6.],[ 7.],[ 8.]],[[ 9.],[10.],[11.]]]])
z_tensor_2=
tensor([[[[ 0.,  0.],[ 1.,  1.],[ 2.,  2.]],[[ 3.,  3.],[ 4.,  4.],[ 5.,  5.]]],[[[ 6.,  6.],[ 7.,  7.],[ 8.,  8.]],[[ 9.,  9.],[10., 10.],[11., 11.]]]])
z_tensor_repeat=
tensor([[[ 0.,  1.,  2.,  0.,  1.,  2.],[ 3.,  4.,  5.,  3.,  4.,  5.],[ 0.,  1.,  2.,  0.,  1.,  2.],[ 3.,  4.,  5.,  3.,  4.,  5.]],[[ 6.,  7.,  8.,  6.,  7.,  8.],[ 9., 10., 11.,  9., 10., 11.],[ 6.,  7.,  8.,  6.,  7.,  8.],[ 9., 10., 11.,  9., 10., 11.]]])

3. pytorch

在这里插入图片描述

相关文章:

einops测试

文章目录 1. einops2. code3. pytorch 1. einops einops 主要是通过爱因斯坦标记法来处理张量矩阵的库,让矩阵处理上非常简单。 conda : conda install conda-forge::einopspython: 2. code import torch import torch.nn as nn import torch.nn.functional as…...

25轻化工程研究生复试面试问题汇总 轻化工程专业知识问题很全! 轻化工程复试全流程攻略 轻化工程考研复试真题汇总

轻化工程复试心里没谱?学姐带你玩转面试准备! 是不是总觉得老师会问些刁钻问题?别焦虑!其实轻化工程复试套路就那些,看完这篇攻略直接掌握复试通关密码!文中有重点面试题可直接背~ 目录 一、这些行为赶紧避…...

小米路由器 AX3000T 降级后无法正常使用,解决办法

问题描述 买了个 AX3000T 路由器,想安装 OpenWRT 或者 安装 Clash 使用,看教程说是需要降级到 v1.0.47 版本。 结果刷机之后路由器无法打开了,一直黄灯亮,中间灭一下,又是黄灯长亮,没有 WIFI 没有连接。以…...

qt5实现表盘的旋转效果,通过提升QLabel类

因为工作需要,需要实现温度的表盘展示效果 实现思路: 通过提示声QLabel控价类,实现报盘的旋转和展示效果 1. 编写一个QLabel的类MyQLabel,实现两个方法 1. void paintEvent(QPaintEvent *event); //重绘函数 2. void valueChanged(int va…...

【HeadFirst系列之HeadFirst设计模式】第7天之命令模式:封装请求,轻松实现解耦!

命令模式:封装请求,轻松实现解耦! 大家好!今天我们来聊聊设计模式中的命令模式(Command Pattern)。如果你曾经需要将请求封装成对象,或者希望实现请求的撤销、重做等功能,那么命令模…...

HTTPS(下)

主要讲加密算法RSA,ECDHE TLS的握手涉及四次通信,根据不同的密钥交换算法,TLS 握手流程也会不一样的,现在常用的密钥交换算法有两种:RSA 算法和 ECDHE 算法 正常情况下,需要先TCP三次握手后进行TLS四次握手…...

vue2 和 vue3 中 computer 计算属性的用法

Vue 2 中的 computed 在 Vue 2 中&#xff0c;计算属性是响应式的&#xff0c;并且基于 getter 进行缓存&#xff0c;只有依赖的响应式数据发生变化时才会重新计算。 基本用法 <template><div><p>原始消息&#xff1a;{{ message }}</p><p>反…...

【STM32学习】标准库实现STM32 ADC采集1路、2路、多路

目录 ADC采集 ADC配置步骤 STM32F103C8T6的ADC 输入通道 ​编辑 1路ADC&#xff08;A4 ADC 通道4&#xff09; 1路ADC源码代码链接&#xff1a; 2路ADC&#xff08;A4 ADC 通道4、A5 ADC 通道5&#xff09;基于DMA实现 多路ADC实现采集 ADC采集 ADC配置步骤 使能GPIO…...

【STM32】外部时钟|红外反射光电开关

1.外部时钟 单片机如何对外部触发进行计数&#xff1f;先看一下内部时钟&#xff0c;内部时钟是接在APB1和APB2时钟线上的&#xff0c;APB1,APB2来自stm32单片机内部的脉冲信号&#xff0c;也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机&#xff0c;来对其…...

【语音科学计算器】当前汇率

JSON_MARKER_HORN{“base”:“USD”,“rates”:{“EUR”:0.9758,“JPY”:157.68,“GBP”:0.8190,“CNY”:7.3327,“HKD”:7.7872,“AUD”:1.6260,“CAD”:1.4422,“CHF”:0.9157,“SGD”:1.3714,“KRW”:1473.05,“NZD”:1.7992,“THB”:34.54,“MYR”:4.4930,“PHP”:57.32,“…...

PHP post 数据丢失问题

max_input_vars是PHP配置选项之一&#xff0c;用于设置一个请求中允许的最大输入变量数。它指定了在处理POST请求或者通过URL传递的参数时&#xff0c;PHP脚本能够接收和处理的最大变量数量。 max_input_vars的默认值是1000&#xff0c;意味着一个请求中最多可以包含1000个输入…...

【云服务器】云服务器内存不够用,开启SWAP交换分区

交换分区&#xff08;Swap&#xff09; 1.创建 2GB Swap 文件 sudo fallocate -l 2G /swapfile &#xff08;如果 fallocate 不支持&#xff0c;可以用 dd 命令&#xff09; sudo dd if/dev/zero of/swapfile bs1M count2048 2.设置 Swap 权限 sudo chmod 600 /swapfile…...

未来SLAM的研究方向和热点

SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;是同时定位与地图构建的缩写&#xff0c;指的是机器人或设备在一个未知环境中一边进行自我定位&#xff0c;一边构建出环境的地图。SLAM广泛应用于机器人、自动驾驶、无人机等领域&#xff0c;涉及多个研究方…...

Orange 单体架构 - 快速启动

1 后端服务 1.1 基础设施 组件说明版本MySQLMySQL数据库服务5.7/8JavaJava17redis-stackRedis向量数据库最新版本Node安装Node22.11.0 1.2 orange-dependencies-parent 项目Maven依赖版本管理 1.2.1 项目克隆 GitHub git clone https://github.com/hengzq/orange-depende…...

【SQL】多表查询案例

&#x1f4e2;本章节主要学习使用SQL多表查询的案例,多表查询基础概念 请点击此处。 &#x1f384;数据准备 首先我们创建一个新的表也就是薪资等级表&#xff0c;其余两个表(员工表和薪资表)在多表查询章节中已经创建。然后我么根据这三个表完成下面的12个需求。 create tab…...

springboot系列十四: 注入Servlet, Filter, Listener + 内置Tomcat配置和切换 + 数据库操作

文章目录 注入Servlet, Filter, Listener官方文档基本介绍使用注解方式注入使用RegistrationBean方法注入DispatcherServlet详解 内置Tomcat配置和切换基本介绍内置Tomcat配置通过application.yml完成配置通过类配置 切换Undertow 数据库操作 JdbcHikariDataSource需求分析应用…...

力扣-贪心-53 最大子数组和

思路 先把每一个值都加到当前集合中&#xff0c;记录当前的和&#xff0c;直到当前记录和小于0了&#xff0c;再重置改记录&#xff0c;再次尝试累加 代码 class Solution { public:int maxSubArray(vector<int>& nums) {int res INT32_MIN;int curSum 0;for(in…...

吃一堑长一智

工作中经历&#xff0c;有感触记录下 故事一 以前在一家公司时&#xff0c;自己是一名开发人员&#xff0c;遇到问题请教领导解决方案&#xff0c;当时领导给了建议&#xff0c;后来上线后出问题了&#xff0c;背了锅。心里想的是领导说这样做的呀&#xff0c;为什么出问题还…...

aws(学习笔记第二十九课) aws cloudfront hands on

aws(学习笔记第二十九课) 使用aws cloudfront 学习内容&#xff1a; 什么是aws cloudfront练习使用aws cloudfront 1. 什么是aws cloudfront aws cloudfront的整体架构 这里可以看出&#xff0c;aws引入了edge location的概念&#xff0c;用户的client与edge location进行是…...

deepseek自动化代码生成

使用流程 效果第一步&#xff1a;注册生成各种大模型的API第二步&#xff1a;注册成功后生成API第三步&#xff1a;下载vscode在vscode中下载agent&#xff0c;这里推荐使用cline 第四步&#xff1a;安装完成后&#xff0c;设置模型信息第一步选择API provider&#xff1a; Ope…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...