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

从PyTorch官方的一篇教程说开去(6.2 - 张量 tensor 矩阵运算等)

您的进步和反馈是我写作最大的动力,小伙伴来个三连呗!共勉~

话不多说,书接上文,需要温习的小伙伴请移步 - 从PyTorch官方的一篇教程说开去(6.1 - 张量 tensor 基本操作)-CSDN博客

借图镇楼 - 

1 - 矩阵乘法(点积或外积,整个行乘以整个列):

shape = (4,4)
ones_tensor = torch.ones(shape)
y1 = ones_tensor @ ones_tensor
print(f"{y1}\n")shape = (4,4)
ones_tensor = torch.ones(shape)
y2 = torch.matmul(ones_tensor,ones_tensor.T)
print(f"{y2}\n")z1 = torch.rand_like(y1)
torch.matmul(ones_tensor, ones_tensor.T, out=z1)
print(f"{z1}\n")
  • 使用 @ 符号,等同于调用matmul函数,进行矩阵乘法。由于 ones_tensor 是一个 4x4 的全1矩阵,其与自身的乘法结果将是一个元素为4的矩阵。ones_tensor.T 表示转置。用out 参数,可以就地执行矩阵乘法,结果存储在 z1 中。这样可以避免额外的内存分配。

2 - 元素级别的点乘(dot product):

y3 = ones_tensor * ones_tensor
print(f"{y3}\n")y4 = torch.mul(ones_tensor,ones_tensor.T)
print(f"{y4}\n")z2 = torch.rand_like(y3)
torch.mul(ones_tensor,ones_tensor.T,out=z2)
  • 元素级别的点乘,也就是逐元素相乘。对于全1矩阵,结果是每个元素都是1。同上例,提供3种算符。

3 - torch没有官方定义叉乘(Cross Product):

# 定义两个三维向量
vector_a = torch.tensor([1.0, 2.0, 3.0])
vector_b = torch.tensor([4.0, 5.0, 6.0])# 计算叉乘
cross_product = torch.linalg.cross(vector_a, vector_b)print(f"Vector A: {vector_a}")
print(f"Vector B: {vector_b}")
print(f"Cross Product: {cross_product}")
  • 尽管官方没有,但是为了区别这几个容易混淆的概念,我们还是配个例子。叉乘(Cross Product)通常是针对两个三维向量而言的,它返回一个向量,该向量垂直于原来的两个向量,并遵循右手定则。

4 - 单元素张量:

agg = ones_tensor.sum()
agg_item = agg.item()
print(agg_item,type(agg_item))
  •  ones_tensor 是一个 4x4 的单位矩阵,其元素总和将是 4x4=16。item() 方法用于将这个张量转换成一个 Python 标量(即一个单一数值)。在进行一些扁平化的操作时候会用到。

5 - 就地计算函数(为节约存储,这些都很常用):

原地操作函数(in-place operations) 以_结尾
add_(): 原地加法。
sub_(): 原地减法。
mul_(): 原地乘法。
div_(): 原地除法。copy_(): 原地复制。
t_(): 原地转置。
fill_(): 原地填充。
zero_(): 原地清零。clamp_(): 原地限制值。
clamp_min_(): 原地最小值限制。
clamp_max_(): 原地最大值限制。sum_(): 原地求和。
mean_(): 原地求平均值。
std_(): 原地求标准差。
var_(): 原地求方差。
norm_(): 原地求范数。
renorm_(): 原地重规范化。addmm_(): 原地矩阵乘法加法。
addr_(): 原地地址加法。
addbmm_(): 原地二维矩阵乘法加法。
baddbmm_(): 原地批量二维矩阵乘法加法。
mm_(): 原地矩阵乘法。
bmm_(): 原地批量矩阵乘法。ger_(): 原地外积。
linalg_vector_norm_(): 原地向量范数。
linalg_matrix_norm_(): 原地矩阵范数。
linalg_solve_(): 原地线性求解。
linalg_inv_(): 原地矩阵求逆。
linalg_pinv_(): 原地伪逆。
linalg_eig_(): 原地特征值分解。
linalg_svd_(): 原地奇异值分解。
linalg_householder_product_(): 原地Householder变换。
linalg_qr_(): 原地QR分解。
linalg_triangular_solve_(): 原地三角求解。
linalg_cholesky_(): 原地Cholesky分解。
linalg_symeig_(): 原地对称特征值分解。
linalg_eigvals_(): 原地特征值计算。
linalg_eigvalsh_(): 原地Hermitian特征值计算。
linalg_slogdet_(): 原地对数行列式。
linalg_det_(): 原地行列式。
linalg_cond_(): 原地条件数。
linalg_matrix_rank_(): 原地矩阵秩。
linalg_solve_triangular_(): 原地三角求解。
linalg_lstsq_(): 原地最小二乘求解。

6 - 打印结果和类型:

np_array = np.array(data)
x_np = torch.from_numpy(np_array)print(f"{x_np}\n")
x_np.add_(1)
print(np_array,"\n")n = np.ones(5)
t = torch.from_numpy(n)
np.add(n,1,out=n)
print(f"{t} \n{n}")
  •  
  • 这里就地展示一下上个小标题的原地计算函数,add_() 是就地操作,它将 1 加到张量 x_np 的每个元素上。注意,由于 x_np 和 np_array 共享内存,np_array 也会被修改。我们还一同展示了如何在数组和张量之间进行互相转化。

相关文章:

从PyTorch官方的一篇教程说开去(6.2 - 张量 tensor 矩阵运算等)

您的进步和反馈是我写作最大的动力,小伙伴来个三连呗!共勉~ 话不多说,书接上文,需要温习的小伙伴请移步 - 从PyTorch官方的一篇教程说开去(6.1 - 张量 tensor 基本操作)-CSDN博客 借图镇楼 - 1 - 矩阵乘…...

【网络层】直连路由、静态路由、动态路由

文章目录 路由表直连路由直连路由 技术背景直连路由 实战训练 静态路由静态路由 技术背景静态路由 概述静态路由 配置命令静态路由 实战训练 动态路由动态路由 技术背景路由协议概述路由协议分类 路由表 路由表的形成,路由的来源: 路由来源备注直连路由…...

tkinter用法总结

Tkinter 是 Python 标准库中的一个模块,用于创建图形用户界面 (GUI)。它是 Python 中最常用的 GUI 库之一,因为它集成在 Python 的标准发行版中,无需额外安装即可使用。 一、基本用法 1. 简单示例 import tkinter as tk# 创建主窗口 root …...

iOS基础-Block

系列文章目录 文章目录 系列文章目录一、Block是什么二、Block的使用场景1. 异步操作和完成处理器2. 动画3. 集合操作4. 定时器5. 自定义控件的事件处理6.错误处理 三、Block的底层实现1.结构分析2.Block的类型3.Block的copy4.变量捕捉 四、Block的使用细节1.auto变量的生命周期…...

本地图片瀑布流浏览器asonry Image Viewer

本地图片瀑布流浏览器asonry Image Viewer 前言效果图部分源码领取完整源码下期更新 前言 一款采用 HTML 的瀑布流本地图片浏览器「Masonry Image Viewer」只需要把你的图片文件夹拖到下载的 index 网页文件里面就可以实现瀑布流效果。项目免费开源,据介绍采用了HT…...

macos重装系统 启动U盘制作方法 - createinstallmedia 命令使用方法总结

macos重装系统比windows要稍微复杂一些,不过还好,macos系统安装app这个Apple官方提供的系统软件里面默认就内置了一个可用为我们制作启动盘的工具 createinstallmedia 我们下载的apple安装镜像要门是 dmg/pkg/iso 的压缩档案格式的,要么是 x…...

八问八答搞懂Transformer内部运作原理

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…...

MySQL增删改查(基础)

1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…...

Cairo库移植到安卓记录

前言 接Android Studio引入ndk编译的so库的故事,这个东西搞了两周以后,由于自己不熟悉Java和安卓开发,踩了不少坑,其中一周时间都是花在怎么用Android Studio上的。。。AS下的新版本Koala,结果网上资料全是旧版本&…...

Redis 哈希类型的常用命令总结

1. hset 设置哈希表中字段的值。 hset key field value示例: hset user:1000 name "Alice"2. hget 获取哈希表中字段的值。 hget key field示例: hget user:1000 name3. hgetall 获取哈希表中所有的字段和值。 hgetall key示例&#x…...

【物联网设备端开发】ESP开发工具:QEMU如何模拟以太网口接入网络

以太网口支持 ESP-IDF中添加了对Opencores以太网MAC的支持。 运行以太网示例时,启用CONFIG_EXAMPLE_CONNECT_ETHERNET和 CONFIG_EXAMPLE_USE_OPENETH.。运行自定义应用程序时,启用CONFIG_ETH_USE_OPENETH 并初始化以太网驱动程序,如示例 /c…...

Python学习笔记(四)

# 数据容器分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)""" 演示数据容器之:list列表 语法:[元素&#xff…...

跨域:安全分步实施指南

什么是跨域问题? 跨域(Cross-Origin Resource Sharing,CORS)问题发生在浏览器的同源策略(Same-Origin Policy)限制下。当一个域上的网页试图访问另一个域上的资源时,浏览器会阻止这些操作以保护…...

【iOS】AutoreleasePool自动释放池的实现原理

目录 ARC与MRC项目中的main函数自动释放池autoreleasepool {}实现原理AutoreleasePoolPage总结 objc_autoreleasePoolPush的源码分析autoreleaseNewPageautoreleaseFullPageautoreleaseNoPage autoreleaseFast总结 autorelease方法源码分析objc_autoreleasePoolPop的源码分析po…...

stm32—GPIO

0. 引入 在单片机产品中,我们常常可以见到三种模块:LCD灯、KEY按键、BEEP蜂鸣器 LED灯: 一个比较常见的LED电路LED0 ---------- 通过控制LED0引脚(电线) 给它一个低电平(低电压),LED灯就会亮 给它一个高电平(高电压),LED灯就会灭 …...

CocosCreator使用 ProtoBuf WebSocket与服务器对接方法

在 Cocos Creator 中使用 .proto 文件和转换成 TypeScript(TS)两者各有其优缺点,具体选择取决于你的项目需求和团队的开发习惯。以下是两者的一些比较: 1、使用 .proto 文件的优点: 跨语言支持:Protocol B…...

【python基础】while循环语句练习

明显可以感觉到循环比判断要更加难以理解一些,这个就只能通过练习来提高理解和思维能力了。 学习视频:第一阶段-第四章-05-while循环案例-九九乘法表_哔哩哔哩_bilibili 练习一:计算1-10的和 i1#循环的起始值 sum0 while i&l…...

【SpringBoot系列】WebMvcConfigurer配置

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

学懂C++ (十九):高级教程——深入详解C++信号处理

目录 C中的信号处理 1. 信号处理的本质 2. 主要信号类型 3. 核心关键点 4. 经典实例 代码分析 5. 进阶:信号屏蔽与多线程 例子:使用sigaction() 6. Windows中的信号处理 7. 比较与总结 示例:Windows控制台事件处理 总结 C中的信号…...

SOMEIP_ETS_032:echoUINT8ArrayMinSize

测试目的: 确保DUT能够正确处理最小尺寸的UINT8数组参数,并且在发送和接收过程中保持参数值和顺序不变。 描述 本测试用例旨在验证DUT在处理包含最小尺寸UINT8数组参数的SOME/IP消息时,是否能够准确地发送和接收这些参数,确保返…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...