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

pytorch中的各种计算

  对tensor矩阵的维度变换,加减乘除等是深度学习中的常用操作,本文对一些常用方法进行总结

矩阵乘法

  混合矩阵相乘,官网

torch.matmul(input, other, *, out=None) → Tensor

  这个方法执行矩阵相乘操作,需要第一个矩阵的最后一个维度和第二个矩阵的第一个维度相同,即:假设我们有两个矩阵 A 和 B,它们的 size 分别为 (m, n) 和 (n, p),那么 A x B 的 size 为 (m, p)。
  矩阵点乘,官网

torch.mul(input, other, *, out=None) → Tensor

  这个方法对矩阵做点积运算(也可简写为*),这个方法要求第一个矩阵的第一个维度和第二个矩阵的第一个维度对应。torch.dot()类似于mul(),它是向量(即只能是一维的张量)的对应位相乘再求和,返回一个tensor。

矩阵维度变换

  tensor.view方法,用于调整矩阵的维度,这个方法要求矩阵在调整为度前后的元素个数必须是相同的,官网,例子:

>>> t = torch.rand(4, 4)
>>> b = t.view(2, 8)
>>> t.storage().data_ptr() == b.storage().data_ptr()  # `t` and `b` share the same underlying data.
True
# Modifying view tensor changes base tensor as well.
>>> b[0][0] = 3.14
>>> t[0][0]
tensor(3.14)

  torch中对矩阵的压缩和解压操作:torch.squeeze和torch.unsqueeze,这两种方法的作用是压缩矩阵中的某一个维度或者增加一个维度,官网,两种方法的详解可以参考我之前的笔记pytorch中的torch.squeeze和torch.unsqueeze。
  矩阵填充,官网torch.nn.functional.pad

torch.nn.functional.pad(input, pad, mode='constant', value=None) → Tensor
Args:"""input:四维或者五维的tensor Variabepad:不同Tensor的填充方式1.四维Tensor:传入四元素tuple(pad_l, pad_r, pad_t, pad_b),指的是(左填充,右填充,上填充,下填充),其数值代表填充次数2.六维Tensor:传入六元素tuple(pleft, pright, ptop, pbottom, pfront, pback),指的是(左填充,右填充,上填充,下填充,前填充,后填充),其数值代表填充次数mode: ’constant‘, ‘reflect’ or ‘replicate’三种模式,指的是常量,反射,复制三种模式value:填充的数值,在"contant"模式下默认填充0,mode="reflect" or "replicate"时没有			

  如果给入的填充次数是负数,该函数可以实现从该方向对矩阵的裁剪操作。
  需要注意的是,本文中提到的所有方法都支持broadcast操作,也就是,除了参与操作的最后两个维度(矩阵),前面的所有维度都会被认为是batch,以torch,matmul为例,该方法使用两个tensor的后两个维度来计算,其他的维度都可以认为是batch。假设两个输入的维度分别是 i n p u t ( 1000 × 500 × 99 × 11 ) input(1000×500×99×11) input(1000×500×99×11), o t h e r ( 500 × 11 × 99 ) other(500×11×99) other(500×11×99),那么我们可以认为 t o r c h . m a t m u l ( i n p u t , o t h e r ) torch.matmul(input,other) torch.matmul(input,other) 首先是进行后两位矩阵乘法得到 ( 99 × 99 ) (99×99) (99×99) ,然后分析两个参数的batch size分别是 ( 1000 × 500 ) (1000×500) (1000×500) ( 500 ) (500) (500), 可以广播成为 ( 1000 × 500 ) (1000×500) (1000×500),因此最终输出的维度是 ( 1000 × 500 × 99 × 99 ) (1000×500×99×99) (1000×500×99×99)

相关文章:

pytorch中的各种计算

对tensor矩阵的维度变换,加减乘除等是深度学习中的常用操作,本文对一些常用方法进行总结 矩阵乘法 混合矩阵相乘,官网 torch.matmul(input, other, *, outNone) → Tensor这个方法执行矩阵相乘操作,需要第一个矩阵的最后一个维度…...

大数据技术之 Kafka

大数据技术之 Kafka 文章目录 大数据技术之 Kafka第 1 章 Kafka 概述1.1 定义1.2 消息队列1.2.1 传统消息队列的应用场景1.2.2 消息队列的两种模式 1.3 Kafka 基础架构 第 2 章 Kafka 快速入门2.1 安装部署2.1.1 集群规划2.1.2 集群部署2.1.3 集群启停脚本 2.2 Kafka 命令行操作…...

【GB28181】wvp-GB28181-pro部署安装教程(Ubuntu平台)

目录 前言1 安装依赖2 安装MySQL3 安装redis4 编译ZLMediaKit代码及依赖下载编译运行(如果要运行wvp整个项目,这步可以先不执行) 5 编译wvp-pro下载源码(建议从github上下载,gitee上维护有时候不是很同步)编…...

CentOS删除除了最近5个JAR程序外的所有指定Java程序

帮我写一个shell脚本,ps -eo pid,lstart,cmd --sort-start_time | grep "pgz-admin"查到的结果,返回的所有进程PID,第六个之上的,全部kill 当然,你可以创建一个简单的Shell脚本来完成这个任务。以下是一个例…...

面试redis篇-13Redis为什么那么快

Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题使用I/O多路复用模型,非阻塞IOI/O多路复用模型 Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O多路复用模型主要就是实现了高效…...

python Matplotlib Tkinter--pack 框架案例

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 版本一 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox…...

连接未来:嵌入式系统在物联网时代的应用

连接未来:嵌入式系统在物联网时代的应用 随着物联网技术的不断发展,嵌入式系统在物联网时代扮演着至关重要的角色。嵌入式系统作为连接物理世界和数字世界的桥梁,为物联网的实现提供了技术支持和基础设施。以下将从几个方面探讨嵌入式系统在…...

自动驾驶中的障碍物时间对齐法

描述 自动驾驶算法使用的系统往往不是实时系统,因此每个节点间拿到的数据可能不是同一时间的数据,从而造成系统误差,针对这一现象,工程上往往采用时间对齐内插外推法。这里我们用感知障碍物来举例。 自动驾驶系统有许多重要模块…...

介绍 PIL+IPython.display+mtcnn for 音视频读取、标注

1. nn.NLLLoss是如何计算误差的? nn.NLLLoss是负对数似然损失函数,用于多分类问题中。它的计算方式如下:首先,对于每个样本,我们需要将其预测结果通过softmax函数转换为概率分布。softmax函数可以将一个向量映射为一个概率分布&…...

C语言中strstr函数的使用!

strstr函数的作用是什么&#xff1f; 查找子字符串 具体直接看下面的这段代码我相信你必明白 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { char *p1 "abcdefghijklmnopqrstuvwxyz"; char* p2 "abc"; char* r…...

Vue项目中,src目录下的vue.app文件介绍

在 Vue 项目中&#xff0c;src 文件夹通常包含了项目的核心代码。在这个文件夹下&#xff0c;App.vue 是一个特殊的文件&#xff0c;它代表了整个 Vue 应用的根组件。 App.vue 是一个单文件组件&#xff08;Single File Component, 简称 SFC&#xff09;&#xff0c;它允许你将…...

【Android】坐标系

Android 系统中有两种坐标系&#xff0c;分别为 Android 坐标系和 View 坐标系。了解这两种坐标系能够帮助我们实现 View 的各种操作&#xff0c;比如我们要实现 View 的滑动&#xff0c;你连这个 View 的位置都不知道&#xff0c;那如何去操作呢&#xff1f; 一、Android 坐标…...

OSCP靶场--Slort

OSCP靶场–Slort 考点(1.php 远程文件包含 2.定时任务提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.178.53 -sV -sC -p- --min-rate 5000 Starting Nmap 7.92 ( https://nmap.org ) at 2024-02-24 04:37 EST Nmap scan report for 192.168.178.53 …...

大数据职业技术培训包含哪些

技能提升认证考试&#xff0c;旨在通过优化整合涵盖学历教育、职业资格、技术水平和高新技术培训等各种教育培训资源&#xff0c;通过大数据行业政府引导&#xff0c;推进教育培训的社会化&#xff0c;开辟教育培训新途径&#xff0c;围绕大数据技术人才创新能力建设&#xff0…...

【Java程序设计】【C00313】基于Springboot的物业管理系统(有论文)

基于Springboot的物业管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的物业管理系统&#xff0c;本系统有管理员、物业、业主以及维修员四种角色权限&#xff1b; 管理员进入主页面&#xff0c;主要功能包…...

TensorFlow训练大模型做AI绘图,需要多少的GPU算力支撑

TensorFlow训练大模型做AI绘图&#xff0c;需要多少的GPU算力支撑&#xff01;这个问题就涉及到了资金投资的额度了。众所周知&#xff0c;现在京东里面一个英伟达的显卡&#xff0c;按照RTX3090(24G显存-涡轮风扇&#xff09;版本报价是7000-7500之间。如果你买一张这样的单卡…...

docker创建mongodb数据库容器

介绍 本文将通过docker创建一个mongodb数据库容器 1. 拉取mongo镜像 docker pull mongo:3.63.6版本是一个稳定的版本&#xff0c;可以选择安装此版本。 2. 创建并启动主数据库 容器数据卷配置 /docker/mongodb/master/data # 数据库数据目录&#xff08;宿主机&am…...

Python并发编程:多线程-线程理论

一 什么是线程 在传统操作系统中&#xff0c;每个进程有一个地址空间&#xff0c;而且默认就有一个控制线程 线程顾名思义&#xff0c;就是一条流水线工作的过程&#xff08;流水线的工作需要电源&#xff0c;电源就相当于CPU&#xff09;&#xff0c;而一条流水线必须属于一个…...

自定义Chrome的浏览器开发者工具DevTools界面的字体和样式

Chrome浏览器开发者工具默认的字体太小&#xff0c;想要修改但没有相关设置。 外观——字体可以自定义字体&#xff0c;但大小不可以调整。 github上有人给出了方法 整理为中文教程&#xff1a; 1.打开浏览器开发者工具&#xff0c;点开设置——实验&#xff0c;勾上红框设…...

人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)

人事管理系统目录 目录 基于Springboot的人事管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、员工管理 3、公告信息管理 4、公告类型管理 5、培训管理 6、培训类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…...

用Verilog在FPGA上实现一个带万年历的数字钟:从分频模块到整点报时的完整设计流程

基于FPGA的智能数字钟系统&#xff1a;从Verilog设计到整点报时的工程实践 在数字电路与嵌入式系统教学中&#xff0c;FPGA&#xff08;现场可编程门阵列&#xff09;因其灵活性和并行处理能力&#xff0c;成为实现数字逻辑系统的理想平台。本文将详细介绍如何使用Verilog HDL在…...

如何用3步实现效率突破:开源智能工具重构网盘资源获取体验

如何用3步实现效率突破&#xff1a;开源智能工具重构网盘资源获取体验 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字化信息爆炸的时代&#xff0c;获取网络资源已成为日常工作和学习的必备技能。然而&#xff0c;面对…...

避坑指南:RK3588 USB DTS配置中那些容易搞混的`dr_mode`、`maximum-speed`和PHY引用

RK3588 USB DTS配置避坑手册&#xff1a;深度解析dr_mode、maximum-speed与PHY引用 当你在RK3588平台上调试USB功能时&#xff0c;是否遇到过这些情况&#xff1a;设备明明配置为OTG模式却无法切换主机角色&#xff0c;USB3.1接口只能跑在USB2.0速度&#xff0c;或者PHY引用错误…...

别再只测距了!用HC-SR04+STM32做个智能防撞小车(附完整代码)

从HC-SR04到智能防撞小车&#xff1a;STM32实战开发全指南 在创客圈里&#xff0c;HC-SR04超声波模块常被当作入门级的测距玩具——接上几根杜邦线&#xff0c;跑个示例代码&#xff0c;测量下距离就束之高阁。但你想过吗&#xff1f;这个售价不到10元的小模块&#xff0c;配合…...

深入PyTorch源码:图解LayerNorm两种实现,弄懂weight/bias到底怎么来的

深入PyTorch源码&#xff1a;图解LayerNorm两种实现&#xff0c;弄懂weight/bias到底怎么来的 在深度学习模型的训练过程中&#xff0c;归一化技术扮演着至关重要的角色。不同于BatchNorm对批处理数据的标准化处理&#xff0c;LayerNorm&#xff08;层归一化&#xff09;因其在…...

Kandinsky-5.0-I2V-Lite-5s GPU显存策略详解:offload机制在24GB卡上的工程实现

Kandinsky-5.0-I2V-Lite-5s GPU显存策略详解&#xff1a;offload机制在24GB卡上的工程实现 1. 模型概述与技术背景 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型&#xff0c;能够将单张输入图片转换为约5秒、24fps的短视频。与完整版相比&#xff0c;Lite版本通过模型…...

ESP32-CAM发热严重还卡顿?可能是你的供电和代码没调对(附优化参数)

ESP32-CAM发热与卡顿问题深度优化指南 最近在工作室调试ESP32-CAM时&#xff0c;发现不少朋友都遇到了类似的问题&#xff1a;模块运行一段时间后烫得能煎鸡蛋&#xff0c;视频流还时不时卡成PPT。这让我想起去年做智能门铃项目时&#xff0c;连续烧坏三块板子的惨痛经历。经过…...

递归神经网络与RTRL算法原理及优化实践

1. 递归神经网络与RTRL算法基础解析递归神经网络&#xff08;RNN&#xff09;与传统前馈神经网络的核心差异在于其反馈连接结构。这种结构赋予了RNN独特的"记忆"能力&#xff0c;使其能够处理时间序列数据中的动态模式。图1展示了二者的架构差异&#xff1a;前馈网络…...

MacBook M1/M2芯片上,用Python 3.10手动安装PyTorch全家桶的保姆级避坑指南

MacBook M1/M2芯片Python 3.10环境配置&#xff1a;PyTorch全家桶精准安装实战手册 当你在M1/M2芯片的MacBook上打开终端&#xff0c;输入那行看似简单的pip install torch命令时&#xff0c;系统报错的那一刻&#xff0c;可能就开启了一场令人头疼的依赖关系迷宫之旅。作为深…...

ComfyUI+Stable Audio Open:游戏开发者如何5分钟生成逼真环境音效(附实战案例)

ComfyUIStable Audio Open&#xff1a;游戏开发者如何5分钟生成逼真环境音效&#xff08;附实战案例&#xff09; 当你在深夜调试游戏场景时&#xff0c;突然发现缺少关键的环境音效——雨林中的虫鸣、古堡走廊的木质地板吱呀声、未来都市的悬浮车引擎嗡鸣。传统音效制作流程可…...