全面理解tensor编程中矩阵的行和列

news2024/9/26 19:49:13

经常会在编程中遇到理解矩阵行和列的事情。

1、要明确无论这个张量有多少维度,它的矩阵乘法都只能作用于最后两个维度。

例如:

import torch

a = torch.rand([64, 32, 3, 4])
b = torch.rand([64, 32, 3, 4])

c = torch.matmul(a, b.transpose(2, 3))  # 交换b的2,3两个维度

print(c.shape)
# torch.Size([64, 32, 3, 3])

注意.dot方法只适用于两个向量的点积运算, torch.matmul是矩阵乘法运算。

2、对于张量的数学含义的理解

首先,一维张量不区分行向量和列向量,比如:

import torch
a = torch.rand([2, 3, 4]).view(-1)
print((a == a.T).all())
# tensor(True)

按照点积关系去理解,一维张量的数学含义是列向量:

import torch
a = torch.rand([2, 3]).view(-1)
b = torch.rand([6, 3])
print(torch.matmul(a, b))  # 1x6 dot 6x3
# tensor([0.8973, 1.0441, 1.3425])
print(torch.matmul(b, a))  # 6x3 dot 1x6
# RuntimeError: size mismatch, get 6, 6x3,6

但是如果不是一维变成二维,那么最底层向量的含义又变成了行向量:

import torch
a = torch.rand([1, 3])
b = torch.rand([3, 2])
print(torch.matmul(a, b))  
# tensor([[0.8463, 0.9703]])
3、对于二维tensor索引的理解

和list一样,依然可以按照向下x向右y的角度理解tensor的索引关系:

在这里插入图片描述

4、axis和dim的理解

首先说结论,axis和dim的含义是一致的,只不过axis来自numpy, dim来自torch。调用torch.sum()方法时可以发现axis和dim参数都一样。

接着解释dim/axis的含义:为针对变量延着哪一个轴进行操作。
假设我们取张量的第一个元素进行操作,
如果dim=0,意思是让这个元素沿着x轴进行操作(向下);
如果dim=1,意思是让这个元素沿着y轴进行操作(向右);
如果dim=2,意思是让这个元素沿着z轴进行操作(向屏幕外)
。。。

import torch
a = torch.rand([2, 3, 4])
# 沿着哪个轴哪个轴就会消失
print(a.sum(dim=0).shape)
print(a.sum(dim=1).shape)
print(a.sum(dim=2).shape)

# torch.Size([3, 4])
# torch.Size([2, 4])
# torch.Size([2, 3])

在这里插入图片描述

常用的两个维度的操作分别是layer维度和batch维度:

layer维度也可以简单这么理解,假设一个张量一共m维,那么当dim=m-1时就表示把张量最里层的向量进行操作,然后逐步向外扩展。此时也可以写作dim=-1。

比如想要对张量进行batch维度的操作,那么就让dim=batch_size所在的维度即可。

注意这里的dim和axis只面向一个维度的处理(第一个元素只能沿着一个轴操作),如果想对图像等对两个维度同时处理需要区分开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.接口测试的基础/接口关联(Jmeter工具/场景一:我一个人负责所有的接口,项目规模不大)

一、Jmeter接口测试实战 1.场景一:我一个人负责所有的接口:项目规模不大 http:80 https:443 接口文档一般是开发给的,如果没有那就需要抓包。 请求默认值: 2.请求: 请求方式:get,post 请求路径 请求参数 查询字符串参数…

sh文件执行提示语法错误: 未预期的文件结尾

在执行sh文件时总是提示:语法错误: 未预期的文件结尾,尝试删除最后的空格也不对 最后发现在notepad中转换的问题 需要把windows换成unix就行了

时间序列中的多尺度问题-近期值得关注的8篇多尺度建模工作

时间序列的多尺度建模 多尺度是时序研究必须要考虑的问题。一方面,不同特征的周期模式有长有短,需要用不同尺度进行刻画。另一方面,尺度越小越精细,计算越复杂;尺度越大越粗糙,相应计算量减少,…

容器化安装jenkins稳定版长期维护版本LTS

前提已有 docker-compose和docker-ce环境,这里安装稳定的Lts版本即可。 选择稳定版本 这里选择LTS 稳定长期维护的版本 在docker镜像找到LTS稳定版本 部署jenkins服务 创建持久化数据目录 jenkinsdata]# pwd /data/jenkinsdata编写docker-compose文件 jenkins_…

DAY 13 : 排序

定义 稳定排序和非稳定排序 设文件f(R1……Ri……Rj……Rn)中记录Ri、Rj(i≠j,i、j1……n)的key相等,即KiKj。 若在排序前Ri领先于Rj,排序后Ri仍领先于Rj,则称这种排序是稳定的&…

Linux操作系统入门(三)

_______________________________________________ 一.Linux操作系统的文件结构 相比于Windows操作系统的C,D,E等盘符,Linux操作系统仅有一个"/"符号的根目录. 这其中存在一个显著的不同,Linux操作系统使用的是斜杠"/",而Windows…

【LLM多模态】文生视频评测基准VBench

note VBench的16个维度自动化评估指标代码实践(待完成)16个维度的prompt举例人类偏好标注:计算VBench评估结果与人类偏好之间的相关性、用于DPO微调 文章目录 note一、相关背景二、VBench评测基准概述:论文如何解决这个问题&…

AJAX 入门 day1

目录 1.AJAX 概念和 axios 使用 2.认识 URL 3.URL 查询参数 4.常用请求方法和数据提交 5.HTTP协议-报文 5.1 HTTP 协议-请求报文 5.2 HTTP 协议-响应报文 6.接口文档 7.案例 - 用户登录 8.form-serialize 插件 1.AJAX 概念和 axios 使用 “Aj…

华为OD机试 - 找出作弊的人(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

JNI 详细介绍

一 介绍 java调⽤c,c代码可以通过JNIEnv执行java代码。 安卓NDK 已经对JNI环境进行了集成,我们可以通过android studio来快速搭建一个项目。 二 项目搭建 打开android studio 创建工程,创建工程选择模板Native C 三 模板格式介绍 生成的…

char 的整数存储解释

目录 1.原因讲解 1.有符号类型的char 2.无符号类型的char(0-255) 练习题1. 练习题2. 练习题3. 小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住!顷刻炼化! 1.原因讲解 1.有符号类型的…

AUTOSAR_EXP_ARAComAPI的5章笔记(6)

返回目录 5.3.5.5 Event-Driven vs Polling-Based access ara::com实现完全支持事件驱动和轮询的方式来访问新数据。 对于轮询方式,典型的用例是,一个应用程序被周期性地触发并在特定的截止时间前进行一些处理。这是调节器/控制算法的典型模式 —— 循…

如何清除KylinOS桌面操作系统桌面密钥环?

如何清除KylinOS桌面操作系统桌面密钥环? 1、问题现象2、解决 💖The Begin💖点点关注,收藏不迷路💖 1、问题现象 打开桌面应用会出现【解锁秘钥环提示】: 2、解决 1、安装seahorse sudo apt-get insta…

【JavaEE】IP协议 应用层协议

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🕶️一.IP地址 IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议之一,它定义了数据包在网络中传输的标准…

Word中插入当前日期与时间

Word中插入当前日期与时间 通过构建基块的方法快速插入当前日期与时间 快捷键操作 快捷键具体功能说明 Alt Shift D 插入当前日期date Alt Shift T 插如当前时间time Ctrl Shift F9 使得域文本变为正常文本 Ctrl F11 锁定域更新域菜单工具会变为黑色 C…

音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现

一、引言 通过FFmpeg命令: ./ffmpeg -i XXX.aac 可以判断出某个文件是否为AAC裸流文件: 所以FFmpeg是怎样判断出某个文件是否为AAC裸流文件呢?它内部其实是通过adts_aac_probe函数来判断的。从《FFmpeg源码:av_probe_input_for…

Qt/C++ 了解NTFS文件系统,获取首张MFT表数据,解析文件记录头内容找到第一个属性偏移地址

系列文章目录 一、Qt/C 了解NTFS文件系统,了解MFT(Master File Table)主文件表(一) 二、Qt/C 了解NTFS文件系统,解析盘符引导扇区数据获取MFT(Master File Table)主文件表偏移地址 三、Qt/C 了解NTFS文件系统,获取首张…

还在为企微联系人烦恼?一招解决!企业微信2024年效率升级全攻略

现在信息多得让人眼花,微信里头那些企业微信的联系人是不是让你头疼? 看着满屏的绿色头像,心里想:“我就想和朋友聊聊天,怎么就这么难?”别急,今天教你个办法,轻松搞定这些小烦恼&am…

【无标题】达瓦达瓦

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

胤娲科技:解锁AI奥秘——产品经理的智能进化之旅

当AI不再是遥不可及的科幻 想象一下,你走进一家未来感十足的咖啡厅,无需言语,智能咖啡机就能根据你的偏好调制出一杯完美的拿铁; 打开手机,AI助手不仅提醒你今天有雨,还贴心推荐了最适合雨中漫步的音乐列表…