个人技术分享

1.拼接与拆分

  • Cat
  • Stack
  • Split
  • Chunk

2.Cat

有两张成绩单
[class1-4,students,scores]
[class5-9,students,scores]’
要把这两个成绩单合并在一起

在这里插入图片描述

如何理解该行为
在这里插入图片描述

注意:班级情况中 A的tensor是[4,32,8],B的tensor是[5,32,8]如果我们是在0维上进行拼接,要确保每个班级的学生数量和每个学生的成绩数量一致

在这里插入图片描述

3.stack

可以完成某种意义上的拼接,但是与cat不一致的是会产生一个新的维度

在这里插入图片描述
插入了一个新的维度

适合什么情况?
统计了某个班级的成绩单,共有32个人,8门课的成绩,该tensor为A[32,8],另一个老师统计了另一个班级,共有32个人8门课的成绩,该tensor为B[32,8],因此如果用cat的话会得到[64,8],即64个人8门课的成绩,明显不符合实际情况,因此不适合cat适合用stack,在学生人数前插入一个新的维度即班级,[2,32,8]符合实际需求

stack 会产生一个新的维度,该维度是什么概念,取决于我们的具体场景

使用stack的tensor维度必须完成一致
在这里插入图片描述

4.split

根据长度拆分
在这里插入图片描述
比如说一共5个班级[5,32,8]前3个班级为重点班级,1个班级为普通班,1个班级为差班,c.split([3,1,1],dim=0)就可以这样拆分

chunk

按数量来拆分
在这里插入图片描述