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

tensor连接和拆分

文章目录

    • 连接
      • torch.cat()
        • 案例准备
      • torch.stack()
        • 区别
    • 拆分
      • torch.split()

连接

torch.cat()

函数目的: 在给定维度上对输入的张量序列 进行连接操作。

案例准备
a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]], dtype=torch.float)
b = torch.tensor([[10,10,10,],[10,10,10],[10,10,10,]], dtype=torch.float)

在这里插入图片描述

# dim指的是维度,dim = 0就是行,所以下面的代码就是按行拼接
print("按行拼接:\n",torch.cat((a,b),dim=0))
print("按行拼接:\n",torch.cat((a,b),dim=0).shape) #6行3列

在这里插入图片描述

print("按列拼接:\n",torch.cat((a,b),dim=1))
print("按列拼接:\n",torch.cat((a,b),dim=1).shape)#3行6列

在这里插入图片描述

torch.stack()

沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。
也就是2维拼成3维,3维拼4维,以此类推。

print("按行拼接:\n",torch.stack((a,b),dim=0))
print("按行拼接:\n",torch.stack((a,b),dim=0).shape) 

在这里插入图片描述

print("按行拼接:\n",torch.stack((a,b),dim=1))
print("按行拼接:\n",torch.stack((a,b),dim=1).shape)

在这里插入图片描述

print("按行拼接:\n",torch.stack((a,b),dim=2))
print("按行拼接:\n",torch.stack((a,b),dim=2).shape)

在这里插入图片描述

区别

stack与cat的区别在于,torch.stack()函数要求输入张量的大小完全相同,得到的张量的维度会比输入的张量的大小多1,并且多出的那个维度就是拼接的维度,那个维度的大小就是输入张量的个数。

c = torch.tensor([[10,20],[30,40],[50,60]], dtype=torch.float)
a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]], dtype=torch.float)
torch.cat((a,c),dim=1)

在这里插入图片描述

#但是以下情况就会出错
torch.cat((a,c),dim=0)

在这里插入图片描述
如图,按行拼接会缺数据,报错吗,应该的。
在这里插入图片描述

torch.stack((a,c),dim=0)
###运行结果
RuntimeError: stack expects each tensor to be equal size, but got [3, 3] at entry 0 and [3, 2] at entry 1

再次验证stack需要两个大小一样的张量

拆分

torch.split()

def split(
tensor: Tensor, split_size_or_sections: Union[int, List[int]], dim: int = 0
) -> Tuple[Tensor, …]:

  • 按块大小拆分张量 除不尽的取余数,返回一个元组
a = torch.tensor([[1,2,3],[4,5,6],[7,8,9]], dtype=torch.float)
print(torch.split(a,2,dim=0))	#按行拆,两行拆成一个
print(torch.split(a,1,dim=0))	#按行拆,一行拆成一个
print(torch.split(a,1,dim=1))	#按列拆,一列拆成一个
print(torch.split(a,2,dim=1)) 	#按列拆,两列拆成一个

在这里插入图片描述

  • 按块数拆分张量
torch.chunk(a,2,dim=0)	#按行拆成两块
torch.split(a,2,dim=1)	#按列拆成两块

在这里插入图片描述


文章转载自:
http://alcometer.hnsdj.cn
http://canadien.hnsdj.cn
http://blastocoele.hnsdj.cn
http://census.hnsdj.cn
http://amban.hnsdj.cn
http://chishima.hnsdj.cn
http://bluff.hnsdj.cn
http://bastard.hnsdj.cn
http://brassfounder.hnsdj.cn
http://applaud.hnsdj.cn
http://blackguard.hnsdj.cn
http://balsamiferous.hnsdj.cn
http://agma.hnsdj.cn
http://biostrategy.hnsdj.cn
http://bottommost.hnsdj.cn
http://artisanship.hnsdj.cn
http://cardiophobia.hnsdj.cn
http://albedometer.hnsdj.cn
http://asymptote.hnsdj.cn
http://artesian.hnsdj.cn
http://caltrop.hnsdj.cn
http://caesaropapism.hnsdj.cn
http://brevier.hnsdj.cn
http://alkylate.hnsdj.cn
http://apocarp.hnsdj.cn
http://checkage.hnsdj.cn
http://amiga.hnsdj.cn
http://beaconage.hnsdj.cn
http://carouse.hnsdj.cn
http://bookful.hnsdj.cn
http://www.dtcms.com/a/12613.html

相关文章:

  • 零基础如何成为一名黑客?小白必学的12个基本步骤,带你从零基础入门到进阶(超详细)
  • Git的学习笔记
  • PP_HTONL(x)
  • Cenos7镜像+Docker问题
  • FAT32文件系统详细分析 (格式化SD nandSD卡)
  • MySQL用户管理(DCL)
  • 极狐GitLab CI/CD 功能合集(超详细教程)
  • 面试干货|2024软件测试面试题汇总
  • spring security OAuth2 搭建资源服务器以及授权服务器/jdbc/jwt两种方案
  • 飞速(FS)与西门子联合打造交换机自动化灌装测试生产线
  • Java多态
  • 【zabbix监控软件(配置及常用键值)】
  • 基于python+django+vue的个性化餐饮管理系统
  • Linux云计算 |【第三阶段】PROJECT1-DAY1
  • Java对象列表属性映射工具类
  • SQLite
  • HTML 转 PDF API 接口
  • SaaS化多租户实现的两种方法
  • MongoDB延迟查询
  • R语言统计分析——功效分析(比例、卡方检验)
  • Reactive 编程-Project Reactor
  • postcss 插件实现移动端适配
  • 力扣139-单词拆分(Java详细题解)
  • 基础Web开发的支持
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • 动态获取git版本号
  • FFmpega安装教程
  • 基于SpringBoot+Vue+MySQL的考编论坛网站
  • JVM: JDK内置命令 - JPS
  • 思维导图模板,看完这些步骤学会制作