Pytorch学习之torch.split函数

Pytorch学习之torch.split函数

一、简介

torch.split用于将一个张量(tensor)沿指定维度(dim)拆分为多个子张量。这个函数对于处理需要按块拆分数据的任务非常有用,例如在自然语言处理和图像处理中的数据预处理。

二、语法和参数

torch.split(tensor, split_size_or_sections, dim=0)

参数:

  • tensor:要拆分的张量。
  • split_size_or_sections:一个整数或者一个包含每个子张量大小的列表。
    • 当为【整数】时,表示每个子张量的大小,最后一个子张量可能会小于这个大小。
    • 当为【列表】时,表示每个子张量的大小。
  • dim:沿着哪个维度进行拆分,默认值为0。

三、实例

例1:按固定大小拆分
import torch# 创建一个示例张量
tensor = torch.arange(10)
print("原始张量:", tensor)# 按大小为3拆分张量
split_tensors = torch.split(tensor, 3)
print("拆分后的张量:")
for i, t in enumerate(split_tensors):print(f"子张量 {i+1}: {t}")

输出:

原始张量: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
拆分后的张量:
子张量 1: tensor([0, 1, 2])
子张量 2: tensor([3, 4, 5])
子张量 3: tensor([6, 7, 8])
子张量 4: tensor([9])
例2:按指定大小列表拆分
import torch# 创建一个示例张量
tensor = torch.arange(10)
print("原始张量:", tensor)# 按指定大小列表拆分张量
split_sizes = [2, 3, 5]
split_tensors = torch.split(tensor, split_sizes)
print("拆分后的张量:")
for i, t in enumerate(split_tensors):print(f"子张量 {i+1}: {t}")

输出:

原始张量: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
拆分后的张量:
子张量 1: tensor([0, 1])
子张量 2: tensor([2, 3, 4])
子张量 3: tensor([5, 6, 7, 8, 9])
例3:按不同维度拆分
import torch# 创建一个示例二维张量
tensor = torch.arange(12).reshape(3, 4)
print("原始张量:\n", tensor)# 按大小为2沿维度1拆分张量
split_tensors = torch.split(tensor, 2, dim=1)
print("拆分后的张量:")
for i, t in enumerate(split_tensors):print(f"子张量 {i+1}:\n{t}")

输出:

原始张量:tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
拆分后的张量:
子张量 1:
tensor([[0, 1],[4, 5],[8, 9]])
子张量 2:
tensor([[ 2,  3],[ 6,  7],[10, 11]])
例4:按不同维度 指定大小列表拆分
import torch# 创建一个示例二维张量
tensor = torch.arange(12).reshape(3, 4)
print("原始张量:\n", tensor)# 按指定大小列表拆分张量
split_tensors = torch.split(tensor, [1, 2, 1], dim=1)
print("拆分后的张量:")
for i, t in enumerate(split_tensors):print(f"子张量 {i+1}:\n{t}")

输出:

原始张量:tensor([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
拆分后的张量:
子张量 1:
tensor([[0],[4],[8]])
子张量 2:
tensor([[ 1,  2],[ 5,  6],[ 9, 10]])
子张量 3:
tensor([[ 3],[ 7],[11]])
例5:高维张量拆分
import torch# 创建一个示例三维张量
tensor = torch.arange(12).reshape(3, 2, 2)
print("原始张量:\n", tensor)# # 按指定大小列表拆分高维张量
split_tensors = torch.split(tensor, [1, 1], dim=1)
print("拆分后的张量:")
for i, t in enumerate(split_tensors):print(f"子张量 {i+1}:\n{t}")

输出:

原始张量:tensor([[[ 0,  1],[ 2,  3]],[[ 4,  5],[ 6,  7]],[[ 8,  9],[10, 11]]])
拆分后的张量:
子张量 1:
tensor([[[0, 1]],[[4, 5]],[[8, 9]]])
子张量 2:
tensor([[[ 2,  3]],[[ 6,  7]],[[10, 11]]])

四、注意事项

  1. split_size_or_sections 为整数时,最后一个子张量的大小可能小于这个整数。

  2. 确保拆分的维度大小能够被 split_size_or_sections 整除,否则最后一个子张量会包含剩余的元素。

  3. 在高维张量上操作时,注意选择合适的维度进行拆分。

  4. 同时只能在一个维度上进行拆分,不能同时拆分多个维度,比如下面这样的语句就是不合规范的:

    split_tensors = torch.split(tensor, [[1, 2, 1], [2, 1]], dim=[1, 0])
    

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

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

相关文章

【C语言】分支(选择)和循环语句

目录 简述选择语句简述if语句单if结构语法格式 if-else结构语法结构 语法结构 循环结构break和continuewhile循环语法结构 for循环语法结构 do while循环语法结构 简述 在c语言中分支和循环语句是极其重要的,就像生活中你难免要做一些判断和循环往复做一些事。 选…

静态IP代理:保障网络稳定的核心技术

静态IP代理作为一种重要的网络工具,因其稳定性和持久性,受到越来越多用户的青睐。本文将深入探讨静态IP代理的定义和优势。 静态IP代理是什么? 静态IP代理是指在代理服务器中分配一个固定的IP地址,用户在使用过程中始终使用同一个…

【CSS in Depth 2 精译】2.2 em 和 rem + 2.2.1 使用 em 定义字号

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力 2.1.1 响应式设计的兴起 2.2 em 与 rem ✔️ 2.2.1 使用 em 定义字号 ✔️2.2.2 使用 rem 设置字号 2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高2.6 自定义属性2.7 本章小结 2.…

linux和mysql基础指令

Linux中nano和vim读可以打开记事文件。 ifdown ens33 ifup ens33 关闭,开启网络 rm -r lesson1 gcc -o code1 code1.c 编译c语言代码 ./code1 执行c语言代码 rm -r dir 删除文件夹 mysql> show databases-> ^C mysql> show databases; -------…

面对全球新能源汽车合作发展创维汽车如何实现共赢

由全球新能源汽车合作组织(筹)主办、中国电动汽车百人会承办的首届全球新能源汽车合作发展论坛(GNEV2024)于6月27日,6月28日在新加坡金沙会议展览中心召开。创维汽车国际营销公司总经理齐奎源受邀参会并作出分享。 本届大会以推动全球新能源汽车产业协同发展与合作…

RK3568平台(USB篇)USB HID设备

一.USB HID设备简介 USB HID设备主要用于和计算机进行交互通信,典型的USB HID类设备包括USB键盘、USB鼠标、USB游戏手柄等等,这些都是日常生活中常见的设备。以USB接口的鼠标为例,打开计算机的“设备管理器”,可以在“鼠标和其他…

设计高并发秒杀系统:保障稳定性与数据一致性

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 引言 一. 系统架构设计 1. 系统架构图 二、 系统流程 三…

简单实现Anaconda/Miniforge虚拟环境的克隆和迁移

简单实现Anaconda/Miniforge虚拟环境的克隆和迁移 一、问题描述一、方式一:使用命令克隆二、方式二:直接复制粘贴 欢迎学习交流! 邮箱: z…1…6.com 网站: https://zephyrhours.github.io/ 一、问题描述 使用Anaconda…

昇思25天学习打卡营第7天|Pix2Pix实现图像转换

文章目录 昇思MindSpore应用实践基于MindSpore的Pix2Pix图像转换1、Pix2Pix 概述2、U-Net架构定义UNet Skip Connection Block 2、生成器部分3、基于PatchGAN的判别器4、Pix2Pix的生成器和判别器初始化5、模型训练6、模型推理 Reference 昇思MindSpore应用实践 本系列文章主要…

无忧易售升级:产品视频翻译支持,拓宽全球市场边界

在电商内容营销迈入视频时代的今天,无忧易售ERP推出针对OZON、Wish、TikTok、Wildberries(野莓)四大平台的产品视频翻译功能,彻底打破语言壁垒,让全球卖家的商品故事,以更生动、更直观的方式,触…

Linux指定文件权限的两种方式-符号与八进制数方式示例

一、指定文件权限可用的两种方式: 对于八进制数指定的方式,文件权限字符代表的有效位设为‘1’,即“rw-”、“rw-”、“r--”,以二进制表示为“110”、“110”、“100”,再转换为八进制6、6、4,所以777代表…

如何寻找一个领域的顶级会议,并且判断这个会议的影响力?

如何寻找一个领域的顶级会议,并且判断这个会议的影响力? 会议之眼 快讯 很多同学都在问:学术会议不是期刊,即使被SCI检索,也无法查询影响因子。那么如何知道各个领域的顶级会议,并对各个会议有初步了解呢…

Redis主从复制、哨兵以及Cluster集群

目录 1.Redis高可用 2.Redis主从复制 2.1 主从复制的作用 2.2 主从复制流程 2.3 搭建Redis 主从复制 ​3.Redis哨兵模式 3.1 哨兵模式概述 3.2 哨兵模式的作用 3.3 故障转移机制 ​3.4 主节点的选举 3.5 搭建Redis哨兵模式 4. Redis 群集模式 4.1 Redis集群的数据分…

VS2022+Qt+OpenCV Debug模式下,循环中格式转换引起的内存异常问题 debug_heap.cpp

文章目录 前言一、问题二、报错1.提示图片2.提示堆栈3.反汇编位置 三、解决办法总结 前言 最近在使用VS2022,C,OpenCV,Qt开发时,遇到了一个疑难杂症-在循环中执行字符串格式转换会触发内存异常,经过痛苦的排查过程&am…

python自动化运维--DNS处理模块dnspython

1.dnspython介绍 dnspython是Pyhton实现的一个DNS工具包,他几乎支持所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同事支持TSIG(事物签名)验证消息和EDNS0(扩展DNS)。在系统管理方面&a…

从零开始实现大语言模型(二):文本数据处理

1. 前言 神经网络不能直接处理自然语言文本,文本数据处理的核心是做tokenization,将自然语言文本分割成一系列tokens。 本文介绍tokenization的基本原理,OpenAI的GPT系列大语言模型使用的tokenization方法——字节对编码(BPE, byte pair en…

认识一下HttpMessageHandler处理管道

[S1208]HttpClient的默认管道结构 接下来我们通过如下的演示程序使用IHttpClientFactory工厂创建了 一个HttpClient对象,并查看其管道依次由哪些类型的HttpMessageHandler对象组成。如代码片段所示,我们定义了一个辅助方法PrintPipeline方法以递归的形式…

C++ ariac2 Windows库编译

cd "F:\\aria2" gmp-6.1.2.tar.lz expat-2.2.0.tar.bz2 sqlite-autoconf-3160200.tar.gz zlib-1.2.11.tar.gz c-ares-1.12.0.tar.gz libssh2-1.8.0.tar.gz --enable-libaria2 --enable-static libgnutls-dev(对于HTTPS,BitTorrent&#xff0…

vue+js实现鼠标右键页面时在鼠标位置出现弹窗

首先是弹窗元素 <div class"tanchuang move-win1"id"tanchuang1"><el-button>111</el-button></div>然后在需要弹窗的地方监听点击事件&#xff0c;可以将这个方法写在页面载入事件中 // 获取弹窗元素 var tanchuang document.…

【开发篇】明明配置跨域声明,为什么却仍可以发送HTTP请求

一、问题 在SpringBoot项目中&#xff0c;明确指定仅允许指定网站跨域访问&#xff1a; 为什么开发人员却仍旧可以通过HTTP工具调用接口&#xff1f; 二、为什么 在回答这个问题之前&#xff0c;我们首先要了解一下什么是CORS&#xff01; 1、什么是CORS CORS的全称为跨域资源…