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.mfbz.cn/a/765282.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT-4o不仅能写代码,还能自查Bug,程序员替代进程再进一步!

目录 1 CriticGPT 01 综合性(Comprehensiveness): 02 幻觉问题(Hallucinates a problem): 2 其他 CriticGPT 案例 随着人工智能(AI)技术不断进步,AI在编程领域的应用…

产品设计的8大步骤

产品设计,通俗来说就是将创新想法或概念转化为落地实体的过程。一般来说,一个成功的产品应当具有创新性、美观性、实用性、可持续性以及经济效益,从而满足用户的使用需求以及市场的发展需求。产品设计也并不是一件简单的事情,产品…

STM32第十五课:LCD屏幕及应用

文章目录 需求一、LCD显示屏二、全屏图片三、数据显示1.显示欢迎词2.显示温湿度3.显示当前时间 四、需求实现代码 需求 1.在LCD屏上显示一张全屏图片。 2.在LCD屏上显示当前时间,温度,湿度。 一、LCD显示屏 液晶显示器,简称 LCD(Liquid Cry…

flex布局中子元素内容超出时,子元素本身出现滚动条实现方法

flex布局中子元素宽度平均分配,并且当子元素内容超出时,子元素本身出现滚动条实现方法: 将父元素设置为display: flex,以启用Flexbox布局。将每个子元素的flex属性设置为1,以使其宽度平均分配。设置子元素的overflow属…

CVE-2019-12272 Openwrt可视页面LuCi命令注入漏洞复现(完结)

声明 本文所使用的一些源代码等内容已经上传至github,具体地址如下 Vulnerability_POC-EXP/OpenWrt/CVE-2019-12272 at main a2148001284/Vulnerability_POC-EXP GitHub 漏洞简介 参考内容: CVE-2019-12272 OpenWrt图形化管理界面LuCI命令注入分析 |…

【吴恩达机器学习-week2】可选实验:使用 Scikit-Learn 进行线性回归

支持我的工作 🎉 📃亲爱的朋友们,感谢你们一直以来对我的关注和支持! 💪🏻 为了提供更优质的内容和更有趣的创作,我付出了大量的时间和精力。如果你觉得我的内容对你有帮助或带来了欢乐&#xf…

springboot项目jar包修改数据库配置运行时异常

一、背景 我将软件成功打好jar包了,到部署的时候发现jar包中数据库配置写的有问题,不想再重新打包了,打算直接修改配置文件,结果修改配置后,再通过java -jar运行时就报错了。 二、问题描述 本地项目是springBoot项目…

Git使用——首次创建本地仓库、配置、初始化、关联远程仓库

1、安装 Git软件 官网:git-scm.com 有时候官网打不开,这里留存个之前下载过的安装包: https://download.csdn.net/download/weixin_43908355/89502977 2、配置本地仓库 在准备建仓库的文件夹里,右键点击:Git Bash …

Cybervadis认证是什么?

Cybervadis认证是一种全面且深入的网络安全评估和认证服务,旨在帮助组织提高其网络安全实践的成熟度,并有效应对不断变化的网络威胁和攻击。以下是关于Cybervadis认证的一些关键信息: 认证目的: 评估和验证组织在网络安全方面的能…

HMI 的 UI 风格成就经典

HMI 的 UI 风格成就经典

SAR目标检测

Multi-Stage with Filter Augmentation 多阶段滤波器增强(MSFA) 对SAR合成孔径雷达目标检测性能的改善 MSFA ON SAR 传统方法: 预训练:传统方法开始于在通用数据集上预训练一个基础模型。 微调:这个预训练的模型会被微调以适应特定的SAR图像,试图缩小域间的差距 …

git命令含有中文,终端输出中文乱码的问题

目录 1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因 2、这样会导致什么问题呢? (1) 问题一: 【属性】选项的【字体】无法识别自定义文字样式,【默认值】选项可选自定义字体样式,却无法覆盖【属性】选项 (2) 问题…

AutoCAD Mechanical下载安装;Mechanical针对机械设计领域开发的CAD软件下载安装!

在AutoCAD Mechanical的助力下,用户能够轻松应对二维绘图与三维建模两大核心任务。二维绘图方面,软件提供了精准且灵活的绘图工具,使得工程师能够迅速勾勒出机械部件的轮廓与细节,大大提高了工作效率。 而在三维建模方面&#xff…

继承QAbstractListModel,结合QListView

这里想要写一个QAbstractListModel的子类&#xff0c;学习一下如何实例化QAbstractListModel。 QAbstractListModel子类化-CSDN博客 QVariant与自定义类型互转之奇巧淫技_qt 类型转 qvariant-CSDN博客 #pragma once#include <QStyledItemDelegate> #include <qmeta…

React+TS 从零开始教程(4):useEffect

上一节传送门&#xff1a;ReactTS 从零开始教程&#xff08;3&#xff09;&#xff1a;useState 源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 上一节&#xff0c;我们已经学会了React的第一个Hook&#xff1a;useState。 这一节&#xff0c;我们要学习的是另一…

聊聊etsy平台,一个年入百万的项目

聊聊etsy平台&#xff0c;一个年入百万的项目 什么是etsy,这是怎样一个平台&#xff0c;怎样盈利的&#xff1f;相信现在大家满脑子都是这些疑问。 这个平台也是无意间一个学员提到的&#xff0c;据说他朋友靠这个平台年赚好几百万。苦于门槛太高&#xff0c;他也做不了。今天…

乐鑫Wi-Fi单火线开关方案,传统开关智能升级,启明云端乐鑫一级代理商

随着智能家居技术的飞速发展&#xff0c;我们的日常生活正在变得越来越便捷。今天&#xff0c;我们要探讨的是一种创新的智能家居方案——Wi-Fi单火线智能开关。 传统的机械单火线开关虽然简单可靠&#xff0c;但在现代智能家居系统中显得力不从心。它们无法远程控制&#xff…

python实现简单的三维建模学习记录

课程来源与蓝桥云课Python 实现三维建模工具_Python - 蓝桥云课和500 Lines or LessA 3D Modeller 说明 个人估计这是一个值得花一个礼拜左右时间去琢磨的一个小项目。上述网址中的代码直接拿来不一定能跑&#xff0c;需要后期自己去修改甚至在上面继续优化&#xff0c;会在其…

Java 汉诺塔问题 详细分析

汉诺塔 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#xff0c;在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小…

华为手机怎么打印文件?

关于华为手机打印的问题&#xff0c;如果您有打印机&#xff0c;并且已经成功和华为手机相连&#xff0c;在解决上就要容易很多。 具体操作如下&#xff1a; 选择文件 文件来源&#xff1a;华为手机上的文件可以来自多个应用&#xff0c;如图库、备忘录、文件管理等&#xf…