Pytorch中一些重要的经典操作和简单讲解

Pytorch中一些重要的经典操作和简单讲解

形状变换操作

reshape() / view()

import torchx = torch.randn(2, 3, 4)
print(f"原始形状: {x.shape}")# reshape可以处理非连续张量
y = x.reshape(6, 4)
print(f"reshape后: {y.shape}")# view要求张量在内存中连续
z = x.view(2, 12)
print(f"view后: {z.shape}")

transpose() / permute()

# transpose交换两个维度
x = torch.randn(2, 3, 4)
y = x.transpose(0, 2)  # 交换第0和第2维
print(f"transpose后: {y.shape}")  # torch.Size([4, 3, 2])# permute重新排列所有维度
z = x.permute(2, 0, 1)  # 将维度重排为 (4, 2, 3)
print(f"permute后: {z.shape}")

拼接和分割操作

cat() / stack()

# cat在现有维度上拼接
x1 = torch.randn(2, 3)
x2 = torch.randn(2, 3)# 在第0维拼接
cat_dim0 = torch.cat([x1, x2], dim=0)  # (4, 3)
# 在第1维拼接
cat_dim1 = torch.cat([x1, x2], dim=1)  # (2, 6)# stack创建新维度并拼接
stacked = torch.stack([x1, x2], dim=0)  # (2, 2, 3)

chunk() / split()

x = torch.randn(6, 4)# chunk均匀分割
chunks = torch.chunk(x, 3, dim=0)  # 分成3块,每块(2, 4)# split按指定大小分割
splits = torch.split(x, 2, dim=0)  # 每块大小为2
splits_uneven = torch.split(x, [1, 2, 3], dim=0)  # 不均匀分割

索引和选择操作

gather() / scatter()

# gather根据索引收集元素
x = torch.randn(3, 4)
indices = torch.tensor([[0, 1], [2, 3], [1, 0]])
gathered = torch.gather(x, 1, indices)  # (3, 2)# scatter根据索引分散元素
src = torch.randn(3, 2)
scattered = torch.zeros(3, 4).scatter_(1, indices, src)

masked_select() / where()

x = torch.randn(3, 4)
mask = x > 0# 选择满足条件的元素
selected = torch.masked_select(x, mask)# 条件选择
y = torch.randn(3, 4)
result = torch.where(mask, x, y)  # mask为True选x,否则选y

数学运算操作

clamp() / clip()

x = torch.randn(3, 4)# 限制数值范围
clamped = torch.clamp(x, min=-1, max=1)
# 等价于
clipped = torch.clip(x, -1, 1)

norm() / normalize()

x = torch.randn(3, 4)# 计算范数
l2_norm = torch.norm(x, p=2, dim=1)  # L2范数
l1_norm = torch.norm(x, p=1, dim=1)  # L1范数# 归一化
normalized = torch.nn.functional.normalize(x, p=2, dim=1)

统计运算操作

mean() / sum() / std()

x = torch.randn(3, 4, 5)# 各种统计量
mean_all = x.mean()  # 全局均值
mean_dim = x.mean(dim=1)  # 沿第1维求均值
sum_keepdim = x.sum(dim=1, keepdim=True)  # 保持维度# 最值操作
max_val, max_idx = torch.max(x, dim=1)
min_val, min_idx = torch.min(x, dim=1)

广播和重复操作

expand() / repeat()

x = torch.randn(1, 3)# expand不复制数据,只是改变视图
expanded = x.expand(4, 3)  # (4, 3)# repeat实际复制数据
repeated = x.repeat(4, 2)  # (4, 6)

tile() / repeat_interleave()

x = torch.tensor([1, 2, 3])# tile像numpy的tile
tiled = x.tile(2, 3)  # 重复2次每行,3次每列# repeat_interleave每个元素重复
interleaved = x.repeat_interleave(2)  # [1, 1, 2, 2, 3, 3]

类型转换操作

to() / type() / cast()

x = torch.randn(3, 4)# 类型转换
x_int = x.to(torch.int32)
x_float = x.type(torch.float64)
x_cuda = x.to('cuda')  # 移到GPU(如果可用)# 设备转换
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x_device = x.to(device)

在深度学习领域,这类张量运算操作具有极高的应用频率,尤其在数据预处理、模型架构构建及推理后处理等关键环节中不可或缺。熟练掌握此类算子的应用逻辑,能够显著优化张量数据的处理流程,提升深度学习任务的执行效率与工程实现效能。

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

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

相关文章

ubuntu下nginx

我用的是ubuntu22 配置文件的准确位置 静态网页的存放位置 放大看到在静态文件部署的配置路径 该路径下面有一个default文件查看 针对上图的解析如下: 找到root /var/www/html 我尝试把自己的一个index文件设置为默认,复制到/var/www/html下 ctrl加…

Git使用手册保姆级教程

Git 使用手册 一、Git 简介与安装 什么是Git? • Git 是一个分布式版本控制系统,用于跟踪文件变化,支持多人协作开发。 安装步骤 • Windows:通过 Git官网 下载安装包,按默认配置安装即可。 • macOS&#xff1a…

k8s Headless Service

Kubernetes 无头服务(Headless Service)配置与使用场景 1.无头服务概述 无头服务(Headless Service)是 Kubernetes 中的一种特殊服务类型,它**不分配集群 IP(ClusterIP),而是直接暴露…

基本面高股息策略

策略概述 一种基于基本面高股息策略的投资策略,主要通过Python在聚宽平台上实现。该策略的核心思想是通过筛选出具有优质基本面和高股息率的股票进行投资,以期获得稳定的长期回报。策略包括以下几个主要步骤: 1. 初始化与参数设置:定义策略的基本参数和回测设置。 2. 每日…

GaussDB资源冻结与解冻:精细化资源管理的实践与策略

GaussDB资源冻结与解冻:精细化资源管理的实践与策略 引言 在云计算环境中,数据库资源的动态调配能力直接影响业务成本与稳定性。华为云GaussDB作为新一代分布式数据库,通过​​资源冻结(Resource Quota Freeze)​​与…

设计模式24——访问者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 访问者模式(Visito…

cuda编程笔记(2)--传递参数、设备属性

以下是最简单的带参数的核函数使用过程&#xff1a; #include<iostream> #include<cstdio> #include "cuda_runtime.h" #include "device_launch_parameters.h" __global__ void add(int a,int b,int *c) {*c a b; } int main() {int c;int…

C# WinForm应用程序多语言实现全面指南

目录 引言 一、多语言实现基础概念 1.1 多语言实现的核心原理 1.2 .NET本地化支持机制 二、基于XML的多语言实现方案 2.1 方案概述 2.2 XML文件结构示例 2.3 实现步骤 2.4 优缺点分析 三、基于.resx资源文件的多语言实现 3.1 方案概述 3.2 实现步骤 3.3 资源文件结…

Python爬虫实战:研究Playwright框架相关技术

1 引言 1.1 研究背景与意义 网络爬虫作为一种自动获取互联网信息的技术,在数据采集、信息监测、竞争情报等领域具有广泛应用。随着 Web 技术的发展,越来越多的网站采用 JavaScript 动态渲染技术,传统爬虫工具难以有效获取完整的页面内容。Playwright 作为新一代自动化测试…

中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新

全球化是阿里云的长期战略&#xff0c;未来阿里云将持续加大云和 AI 基础设施建设投入。首先是加速打造全球化的云计算网络&#xff0c;一张具备 AI技术服务能力和全球竞争力的云计算网络是阿里云的长期目标。 —— 阿里巴巴集团 CEO、阿里云智能集团董事长兼 CEO 吴泳铭 5 月 …

唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!

在智能家居的浪潮中&#xff0c;门锁搭载显示屏已成为行业创新的焦点。据行业数据显示&#xff0c;2023年全球智能门锁出货量中&#xff0c;搭载显示屏的型号占比已突破40%&#xff0c;且年复合增长率达25%。而2024年国内智能门锁销量突破2200万套&#xff0c;预计2025年市场规…

轻量化开源方案——浅析PdfPatcher实际应用

PDF处理在实际工作中十分重要&#xff0c;今天浅析PdfPatcher在PDF处理中的实际应用。 核心功能实测 批量处理能力 支持修改文档属性/页码编号/页面链接 一键清除复制/打印限制&#xff08;实测WPS加密文档可解锁&#xff09; 自动清理隐藏冗余数据&#xff08;经测试可平均…

Docker 环境搭建与三大数据库(MySQL/Redis/MongoDB)部署教程

Docker 环境搭建与三大数据库(MySQL/Redis/MongoDB)部署教程 一、简介二、安装wsl三、wsl磁盘迁移四、wsl磁盘压缩五、Docker下载六、win11配置docker虚拟环境命令工具七、Docker部署mysql八、Docker部署redis九、Docker部署mongo一、简介 Docker 是一个开源的容器化平台,它…

CPO-BP+MOPSO,冠豪猪优化BP神经网络+多目标粒子群算法!(Matlab源码)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CPO-BPNSGA&#xff0c;冠豪猪优化BP神经网络粒子群算法&#xff01;&#xff08;Matlab完整源码和数据&#xff09;&#xff0c;冠豪猪算法优化BP神经网络的权值和阈值&#xff0c;运行环境Matlab2020b及以上。 多…

Vision Pro发布!开发者如何快速上手空间UI设计?

Vision Pro发布&#xff01;开发者如何快速上手空间UI设计&#xff1f; 【内容摘要】 苹果最新发布的Vision Pro&#xff0c;不仅重新定义了我们对虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;的认知&#xff0c;也为开发者们带来了前所未有的机…

Bootstrap法进行随机模拟

一、问题背景 # 26名神经功能受损儿童接受了两组&#xff08;A组与B组&#xff09;空间知觉测试&#xff0c;得分如下A组和B组数据。 # A组数据 x_A <- c(48, 36, 20, 29, 42, 42, 20, 42, 22, 41, 45, 14, 6, 0, 33, 28, 34, 4, 32, 24, 47, 41, 24, 26, 30, 41)# B组数据…

Spring AI 多模型智能协作工作流实现指南

Spring AI 多模型智能协作工作流实现指南 说明 本文档旨在指导开发者基于 Spring AI 框架&#xff0c;在 Spring Boot 2 环境下集成多种主流大语言模型&#xff08;如 OpenAI ChatGPT、Deepseek、阿里云通义千问等&#xff09;&#xff0c;并提供从环境配置、模型调用、流式输…

C语言中清空缓存区到底写到哪里比较好

文章目录 问题背景%d和%c读取缓冲区的差别清空缓存区 问题背景 在写C语言的命令行程序时&#xff0c;我们经常会用到用户输入和标准输出&#xff0c;特别的&#xff0c;当用户输入后&#xff0c;我们发现程序运行不是我们要的样子&#xff0c;这个时候&#xff0c;很可能就是输…

计算机视觉与深度学习 | 基于 YOLOv8 + BeautyGAN + CodeFormer + Face Parsing 实现简单的人脸美颜

人脸美颜 **一、算法流程图****二、完整代码实现**1. 环境准备2. 完整代码(face_beautify.py)**三、核心算法公式**1. YOLOv8检测损失函数2. BeautyGAN损失函数3. CodeFormer图像重建公式**四、关键实现细节**1. 多尺度人脸处理2. 颜色校正策略**五、模型下载清单****六、性能…

如何在WordPress中选择最佳Elementor主题:专家指南

当你在WordPress建站过程中逐步积累了经验&#xff0c;你可能会发觉&#xff0c;基础和进阶主题已难以完全满足你的需求。如果你需要更复杂的功能、更灵活的布局设计&#xff0c;甚至高级定制效果&#xff0c;那么就需要选择更加专业的主题。在这篇文章中&#xff0c;我将为你推…