pytorch学习笔记(六)——pytorch进阶教程之合并与分割
目录
合并----cat
假设有两份数据,一份是属于班级1-4的成绩,一份是属于班级5-9的成绩。
现在要将两份数据进行合并,使用cat函数,参数一传入要合并的数据,用list形式,参数二传入合并的维度dim=0,说明合并第一个维度,因此[4,32,8]合并[5,32,8]==》[9,32,8]
cat函数中一个重要的传入参数是dimension,如图所示,假设有三个[3,4]的数据,设置dim=0,也就是合并dim0,得到的数据为[12,4]。假设合并[4,4]和[4,3]的数据,dim=1,也就是合并dim1。得到的数据为[4,7]。
需要注意的有两点:1.要合并的数据维度数要一致。2.除了要合并的dim长度可以不一样,其他dim长度必须保持一致。
合并----stack
与cat合并数据方式不同的是,stack则是创建一个新的维度来合并数据
进行操作的两个tensor必须维度一致,size一致,参数dim指定要创建的维度下标,假如现有两个班级,每个班级各有32名同学,记录8门课成绩,如果用cat函数合并则变为记录64名同学8门课成绩,无法体现出班级的概念。这时候就应该采用stack函数在添加上dim0,数据合并后变为[2,32,8]。
拆分----split
split根据长度来拆分
split有两种使用方法,如果要求数据分片后所有分片的长度保持一致,则直接传入一个标量,如图中split(1,dim=0)表示第一个维度,分片后每个分片长度都是1。如果要求数据分片后所有分片的长度视情况而定,则传入一个list,如图中split([1,1],dim=0)表示第一个维度,分片后分片长度依次是1,1。最后一行代码报错是因为分片长度是2,而原数据也是2,只能返回一个分片。
拆分----chunk
chunk按照数量进行拆分
chunk第一个参数传入的是要拆分的数量,例子中传入2,说明要等分成2个分片。