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

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

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

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

例如:

import torcha = 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只面向一个维度的处理(第一个元素只能沿着一个轴操作),如果想对图像等对两个维度同时处理需要区分开。

相关文章:

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

经常会在编程中遇到理解矩阵行和列的事情。 1、要明确无论这个张量有多少维度,它的矩阵乘法都只能作用于最后两个维度。 例如: import torcha torch.rand([64, 32, 3, 4]) b torch.rand([64, 32, 3, 4])c torch.matmul(a, b.transpose(2, 3)) # 交…...

【Kubernetes】常见面试题汇总(十)

目录 29.简述 Kubernetes 自动扩容机制? 30.简述 Kubernetes Service 类型? 31.简述 Kubernetes Service 分发后端的策略? 32.简述 Kubernetes Headless Service ? 29.简述 Kubernetes 自动扩容机制? (…...

CSS —— 界面布局

flexbox - 弹性盒子布局(弹性布局) 一维方向,横纵向排列。 采用flex布局的元素,称为 Flex 容器(flex container),简称"容器" flex-direction 用于设置主轴方向;子元素默…...

SpringBoot万级并发-jemeter-Address already in use: connect

一、场景 用Jmeter压力单测接口的时候,发现报 Response code:Non HTTP response code: java.net.BindException Response message:Non HTTP response message: Address already in use: connect 然后我这边是wondows的电脑操作压测的,操作系统win10&…...

P1228 地毯填补问题

![](地毯填补问题 - 洛谷) #include<bits/stdc.h> using namespace std; #define qw dfs(zxl-1,zyl-1,zx,zy,l); #define we dfs(zxl-1,zyl,zx,zyl,l); #define er dfs(zxl,zyl-1,zxl,zy,l); #define rt dfs(zxl,zyl,zxl,zyl,l);void dfs(int x,int y,int zx,int zy,int…...

【计算机网络】UDP TCP介绍

UDP & TCP介绍 UDP报文格式报文内容介绍端口号报文长度校验和载荷 TCP报文格式初步了解TCP机制确认应答超时重传连接管理滑动窗口流量控制拥塞控制紧急传输数据推送延时应答捎带应答面向字节流异常处理心跳机制 UDP 和 TCP 的区别 UDP 报文格式 对于网络协议, 本质上就是…...

JDBC初相识

文章目录 JDBC的由来JDBC的好处 JDBC核心API的介绍JDBC会用到的包JDBC四个核心对象JDBC访问数据库的步骤 客户端操作MySQL数据库的方式 使用第三方客户端来访问MySQL&#xff1a;SQLyog、Navicat 使用MySQL自带的命令行方式 通过Java来访问MySQL数据库&#xff0c;今天要学习…...

Go语言现代web开发07 map字典

Maps are complex data types used to store key-value pairs. Each key can appear only once on the map and can be used to find the value paired with that key. The default value for the map is nil. A nil map has no keys and keys cannot be added. 映射是用于存储…...

AI工具一键制作爆火的“汉语新解“卡片!

最近出现了一种很火的新玩法“汉语新解”。 AI把一个词汇&#xff0c;以一种特殊的视角&#xff0c;用幽默、讽刺等方式重新定义&#xff0c;然后生成一张精美的卡片。 这个玩法和之前我发的的吐槽工具玩法类似&#xff0c;主打的就是一个新颖、情绪释放。 今天教大家怎么快速…...

windows检查端口占用并关闭应用

要在Windows CMD中找到占用8888端口的应用并关闭该应用&#xff0c;你可以按照以下步骤操作&#xff1a; 打开命令提示符&#xff08;CMD&#xff09;。你可以通过在搜索栏输入 cmd 或使用 Win R 快捷键&#xff0c;然后输入 cmd 并回车来打开。 查找占用8888端口的进程。在C…...

机器学习-聚类算法

机器学习-聚类算法 1.AHC2. K-means3. SC4.MCL 仅个人笔记&#xff0c;感谢点赞关注&#xff01; 1.AHC 2. K-means 3. SC 传统谱聚类&#xff1a;个人对谱聚类算法的理解以及改进 4.MCL 目前仅专注于NLP的技术学习和分享 感谢大家的关注与支持&#xff01;...

keil 中 printf重定向

int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (void*)&ch, 1, 1000);return ch;} 同时勾选&#xff0c;使用微库...

yum下载软件失败:‘Could not resolve host: mirrorlist .centos .org; Unknowm error

Loaded plugins: fastestmirror, ovl Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infracontainer error was 14: curl#6 - “Could not resolve host: mirrorlist.centos.org; Unknow…...

云轴科技ZStack 获鲲鹏应用创新大赛2024上海赛区决赛一等奖

9月13日&#xff0c;鲲鹏应用创新大赛2024上海赛区决赛成功举办。经评委专家从方案创新性、技术领先性、商业前景以及社会价值四个维度严格评审&#xff0c;云轴科技ZStack参赛作品《ZStack鲲鹏原生开发方案》荣获上海赛区企业赛——原生开发赛道&#xff08;互联网&#xff09…...

沉浸式体验Stability AI最新超强AI图片生成模型Ultra

2024年9月4日&#xff0c;亚马逊云科技在Amazon Bedrock上新了Stability AI最新的的三款文本图像生成模型&#xff1a;他们分别是Stable Image Ultra、Stable Diffusion 3 Large 和 Stable Image Core。全新的模型在处理多主题提示词、图像质量和图片排版上较上一代模型有显著提…...

网络安全宣传周的时间,举办活动的方式和意义

网络安全宣传周是中国国家层面为提升公众网络安全意识、普及网络安全知识、推广网络安全技能而设立的一项重要活动。以下是对网络安全宣传周的时间&#xff0c;举办活动的方式和意义的介绍&#xff1a; 时间&#xff1a;国家网络安全宣传周自2014年首次举办以来&#xff0c;每…...

Jacoco的XML报告详解

使用jacococli完成jacoco测试报告生成后,会看到有一个.xml结尾的文件,这个就是xml格式的覆盖率报告。除了xml还有csv、html格式的报告,本文进介绍xml报告。 DTD文件 在介绍jacoco的xml报告之前,我们应该先看一下对应的DTD文件的内容。(DTD的全称为Document Type Definitio…...

【数据结构与算法 | 灵神题单 | 合并链表篇】力扣2, 21, 445, 2816

1. 力扣2&#xff1a;两数相加 1.1 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可…...

【秒达开源】多功能中文工具箱源码:自部署 全开源 轻量级跨平台 GPT级支持+高效UI+Docker

【秒达开源】多功能中文工具箱源码发布&#xff1a;自部署、全开源、轻量级跨平台&#xff0c;GPT级支持高效UI&#xff0c;Docker/便携版任选&#xff0c;桌面友好丰富插件生态 这是一款集大成之作&#xff0c;专为追求高效与便捷的用户量身打造。它不仅支持完全自部署&#…...

【云原生安全篇】一文掌握Harbor集成Trivy应用实践

【云原生安全篇】一文掌握Harbor集成Trivy应用实践 目录 1 概念 1.1 什么是 Harbor 和 Trivy&#xff1f; 1.1.1 Harbor 1.1.2 Trivy 1.2 Harbor 与 Trivy 的关系 Trivy 在 Harbor 中的作用&#xff1a; 1.3 镜像扫描工作流程 2 实战案例&#xff1a;在Harbor 配置 Trivy …...

计算机网络30——Linux-gdb调试命令makefile

1、开始调试 编译时带-g为调试&#xff0c;带调试信息编译后的可执行文件更大 2、进入调试 使用gdb 可执行文件名——进入调试 失败版&#xff1a; 成功版&#xff1a; 3、l命令 l什么都不加——列出10行代码 l 行号——行号的行在中间&#xff0c;向上向下展示10行 4、st…...

【物联网】一篇文章带你认识RFID(射频识别技术)

基本原理 RFID是Radio Frequency Identification的缩写&#xff0c;即射频识别技术&#xff0c;其工作原理基于电磁感应理论&#xff08;射频一般指微波&#xff0c;频段在1-100GHz&#xff0c;适用于短距离通信&#xff09;&#xff0c;是一种非接触式的自动识别技术&#xf…...

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置&#xff0c;以及报警配置&#xff0c;支持双路报警。 1、STM32G474RE的RTC晶振引脚&#xff1a; OSC32_IN为PC14&#xff0c;OSC32_OUT为PC15&#xff1b; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…...

TwinCAT3 实时核中ADS实现C++ server、clinet数据传输

一、基本概念 ADS &#xff1a;Automation Device Specification&#xff0c;ADS设备间进行通信的协议规范。协议定义了ADS device之间如何寻址对方、ADS device之间可以执行哪些操作、执行这些操作需要哪些参数&#xff0c;以及操作完成后如何返回结果等。从编程角度看&#…...

apt:Debian 高级包管理器

​apt​ 是 Advanced Package Tool 的缩写。 ​apt​ 是一个在 Debian 及其衍生版本&#xff08;如 Ubuntu&#xff09;上管理软件包的工具。以下是一些常见的 apt​ 命令和用法&#xff1a; 1. 更新软件包列表 sudo apt update2. 安装软件包 sudo apt install package_nam…...

基于React+JsonServer+Antddesign的读书笔记关联系统

文章目录 涉及技术系统功能JsonServer介绍JsonServer安装JsonServer使用创建React项目我的书架显示效果关键代码笔记显示效果关键代码人物关系显示效果关键代码个人中心显示效果关键代码完整代码和数据下载地址项目启动步骤启动json-server启动react项目涉及技术 React Antddes…...

【win工具】win安装flameshot并设置截图快捷键

1.下载flameshot软件2.windows端配置flameshot快捷键3.取消win自带截图快捷键 1.下载flameshot软件 https://flameshot.org/#download installer版本为安装包 portable版本为免安装版 2.windows端配置flameshot快捷键 https://cloud.tencent.com/developer/article/2114952 W…...

react 安装使用 antd+国际化+定制化主题+样式兼容

安装antd 现在从 yarn 或 npm 或 pnpm 安装并引入 antd。 yarn add antd修改 src/App.js&#xff0c;引入 antd 的按钮组件。 import React from react; import { Button } from antd;const App: React.FC () > (<div className"App"><Button type&q…...

【Kubernetes】常见面试题汇总(十六)

目录 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 49.简述 Kubernetes 网络模型&#xff1f; 50.简述 Kubernetes CNl 模型&#xff1f; 48.简述 Kubernetes PodsecurityPolicy 机制能实现哪些安全策略&#xff1f; 在 PodSecurityPolicy 对象…...

【mysql】mysql之优化

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...