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.mzph.cn/diannao/39916.shtml

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

相关文章

RXMH2 RK223 069 AS大容量中间继电器 板前接线 约瑟JOSEF

RXMH2大容量中间继电器型号: RXMH2 RK 223 067大容量中间继电器; RXMH2 RK 223 068大容量中间继电器; RXMH2 RK 223 069大容量中间继电器; RXMH2 RK 223 070大容量中间继电器; 用途 用于电力系统二次回路及工业自…

基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建Kafka大数据运算环境---任务11:基础环境准备

任务描述 任务主要是安装配置基础环境,主要内容包括: 1、安装java Kafka和ZooKeeper都需要安装Java环境,推荐至少Java8及以上版本 2、安装ZooKeeper ZooKeeper是Kafka集群的必要组件 3、安装kafka Kafka版本包括使用的scala语言版本和kafka版…

Ubuntu22.04上Docker的安装

1. 使用APT安装 首先安装HTTPS传输的软件包和CA证书,确保软件下载过程中不被篡改。 sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y然后,使用国内源,并添加软件源的 GPG 密钥以防…

Java面试题:讨论持续集成/持续部署的重要性,并描述如何在项目中实施CI/CD流程

持续集成/持续部署(CI/CD)的重要性 持续集成(Continuous Integration, CI) 和 持续部署(Continuous Deployment, CD) 是现代软件开发的重要实践。这些方法通过自动化构建、测试和部署过程,显著…

Ubuntu 用户配置

环境信息 系统版本Ubuntu16.04.1-Ubuntu x86_64 创建用户组 新建一个用户组,GID为888。 sudo addgroup –g 888 组名删除用户组 sudo delgroup 组名创建用户 username 为用户名,执行后系统会提示输入新用户的密码,后续输入其他信息&#xff0…

代码随想录day34 贪心(5)

56. 合并区间 - 力扣(LeetCode) 写法一:维护right和left两个数作为当前区间的左右边界 class Solution:def merge(self, intervals: List[List[int]]) -> List[List[int]]:intervals.sort(key lambda x: x[0])left intervals[0][0]ri…

番外1:企业数据

数据类别说明 企业中除了主数据和次级数据外,企业中还有其他一些常见的数据分类,这些数据类型根据其特定的用途和性质,在企业的各个功能和部门中起着重要作用。 主数据(Master Data) 主数据是企业中核心、长期存在且在整个组织中广泛使用的关键数据。主数据具有以下特征:…

Vue2和Vue3的区别Vue3的组合式API

一、Vue2和Vue3的区别 1、创建方式的不同: (1)、vue2:是一个构造函数,通过该构造函数创建一个Vue实例 new Vue({})(2)、Vue3:是一个对象。并通过该对象的createApp()方法,创建一个vue实例。 Vue…

RAG技术下的文档智能检索

在数字化浪潮的推动下,信息检索已成为我们日常生活中不可或缺的一部分。然而,随着数据量的爆炸式增长,如何快速精准地从海量文档中检索出有价值的信息,成为了一个巨大的挑战。本文将带您走进 Pinecone 向量数据库的世界&#xff0…

AIGC到底如何改变创意设计?

在当今数字化时代,AIGC(生成式人工智能)技术的崛起对创意设计领域产生了深远的影响。AIGC不仅为设计师提供了新的工具和方法,还改变了传统的设计流程和思维方式。 传统的设计过程中,设计师需要耗费大量时间在绘图、修…

npm install puppeteer 报错 npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated解决办法

npm install puppeteer 报错如下: npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated. Use PUPPETEER_DOWNLOAD_BASE_URL instead. npm ERR! Error: ERROR: Failed to set up Chrome v126.0.6478.126! Set "PUPPETEER_SKIP_DOWNLOAD" env variable to sk…

【Linux进程】僵尸进程与孤儿进程

前言 僵尸进程和孤儿进程是Linux中极为重要的两个种进程状态, 本文将会围绕这三个问题: 是什么? 为什么? 如何产生的? 详细的介绍这两种进程; 以及一些使用场景. 僵尸进程 在了解孤儿进程之前, 需要先引入僵尸进程的概念; 什么是僵尸进程? 僵尸进程: 就是处于僵死状态的进…

揭秘代理IP:原理、优势与应用场景全面解析

随着数字化进程的加速,网络安全已经成为现代社会不可或缺的一环。无论是政府机构、企业还是个人用户,都面临着越来越多的网络威胁。本文将深入探讨网络安全的重要性、面临的主要威胁以及应对策略,旨在为读者提供一个全面的网络安全视角。 1.…

黑马点评学习过程汇总——Cookie \ Session \ Token的区别

1. Cookie \ Session \ Token的区别 10分钟助你弄懂cookie、session、token 区别、用途!!!_哔哩哔哩_bilibili (1)为什么要使用Cookie 在客户端和服务端之间维持用户登录状态 (2)为什么不能只…

类似Jira的在线项目管理软件有哪些?10 个主流的Jira替代方案

10 个 Jira 替代方案:PingCode、Worktile、Teambition、Redmine、Asana、monday.com、Zoho Projects、思码逸、Notion、Airtable。 Jira 是一款流行的项目管理工具,专为产品开发团队而设计。虽然它是一种多功能解决方案,几乎适用于任何类型的…

Git 操作补充:变基

变基 在 Git 中,整合来自不同分支的修改,除了 merge,还有一种方法,变基 rebase。git rebase 命令基本是是一个自动化的 cherry-pick 命令,它计算出一系列的提交,然后在其他地方以同样的顺序一个一个的 che…

流程表单设计器开源优势多 助力实现流程化!

实现流程化办公是很多职场企业的发展目标。应用什么样的软件可以实现这一目的?低代码技术平台、流程表单设计器开源的优势特点多,在推动企业降本增效、流程化办公的过程中作用明显,是理想的软件平台。那么,流程表单设计器开源的优…

编译Open Cascade(OCC)并使用C#进行开发

说明: VS版本:Visual Studio Community 2022系统:Windows 11 专业版23H2Open CASCADE:v7.7.0(链接:https://pan.baidu.com/s/1-o1s4z3cjpYf5XkwhSDspQ?pwdp9i5提取码:p9i5) 下载和…

Julia精解【1】

文章目录 转换类型伴随矩阵 转换类型 在Julia中,可以使用内置函数来转换或者调整数据类型。以下是一些常用的数据类型转换方法: 转换类型 Int(): 将浮点数或字符串转换为整数。Float(): 将整数或字符串转换为浮点数。String(): 将其他类型转换为字符串…

阐述pandabuy淘宝代购集运系统在国外用户采购中国商品重要性丨类似淘宝代购集运系统搭建经验

Pandabuy淘宝代购集运系统在国外用户采购中国商品中的重要性,主要体现在以下几个方面: 一、满足多样化需求 Pandabuy系统为海外消费者提供了一个便捷的渠道,使他们能够轻松购买到来自中国电商平台的商品,如淘宝、天猫、京东等。…