Pytorch代码—张量
Pytorch张量
张量的属性:
- data:被包装的Tensor
- grad:data的梯度
- grad_fn:创建Tensor的Function,是自动求导的关键
- requires_grad:指示是否需要梯度
- isleaf:指示是否是叶子结点(张量)
- dtype:张量的数据类型,如 torch.FloatTensor,torch.cuda.FloatTensor
- shape:张量的形状,如(64,3,224,224)
- device:张量所在设备,GPU/CPU,是加速的关键
张量的创建
直接创建
1.方式一
torch.tensor()
- data:数据,可以是list,numpy
- dtype:数据类型,默认与data的一致
- device:所在设备,cuda/cpu
- requires_grad:是否需要梯度
- pin_memory:是否存于锁页内存
依据数值进行创建
- 方式二
torch.from_numpy(ndarray)
功能:从numpy创建tensonr
注意事项:从torch.from_numpy创建的tensor于原ndarray共享内存,当修改其中一个的数据,另外一个也将会被改动
即当numpy的数据发生变化时,张量的数据也发生改变
- 方式三:创建全为0的张量
功能:依size创建全0张量
- size:张量的形状,如(3,3)、(3,224,224)
- out:输出的张量
- layout:内存中布局形式,有strided,sparse_coo等
- device:所在设备,gpu/cpu
- requires_grad:是否需要梯度
- 方式四
功能:依input形状创建全0张量
- intput:创建与input同形状的全o张量
- dtype:数据类型
- layout:内存中布局形式
torch.full()
功能:依input形状创建指定数据的张量
- size:张量的形状,如(3,3)
- fillvalue:张量的值
功能:创建等差的1维张量 注意事项:数值区间为[start,end】
- start:数列起始值
- end:数列结束值
- step:数列公差,默认为1
功能:创建均分的1维张量
- start:数列起始值
- end:数列结束值
- steps:数列长度
功能:创建对数均分的1维张量
- start:数列起始值
- end:数列结束值
- steps:数列长度
- base:对数函数的底,默认为10
根据概率分布来进行创建
功能:生成正态分布(高斯分布)
- mean:均值
- std:标准差
功能:生成标准正态分布
- size:张量的形状
张量的操作
张量的合并与切分
torch.cat()
功能:将张量按维度dim进行拼接
- tensors:张量序列
- dim:要拼接的维度
torch.stack()
功能:在新创建的维度dim上进行拼接
- tensors:张量序列
- dim:要拼接的维度
功能:将张量按维 度d im 进行切分 返回值:张量列表
- tensor : 要切分的张量
- split_size_or_sections : 为int时表示每一份的长度;为 list时 , 按list元素切分
- dim : 要切分的维度
张量索引
功能:在维度dim上,按index索引数据返回值:依index索引数据拼接的张量
- input:要索引的张量
- dim:要索引的维度
- index:要索引数据的序号
张量变换
- input:要变换的张量
- shape:新张量的形状
功能:交换张量的两个维度
- input:要变换的张量
- dim0:要交换的维度
- dim1:要交换的维度
torch.sgueeze()
功能:压缩长度为1的维度(轴)
- dim:若为None,移除所有长度为1的轴;若指定维度,当且仅当该轴长度为1时,可以被移除;
torch.unsgueeze()
功能:依据dim扩展维度
- dim:扩展的维度
总结
pytorch的学习过程,应该在熟悉理论知识的基础上,结合官网文档和其他资料的基础上进行具体方法的时间,在时间的堆积,和项目的锻炼中才能进一步的提升熟练度。