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
按数量来拆分