文章目录
本篇文章是基于官方文档的学习下,做的一些笔记,主要目的是方便今后个人的查阅。
https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor-tutorial-py
PyTorch为何物
定义:基于Python的库,可帮助构建深度学习模型并在各种程序中使用他们。但是它不仅仅是一个深度学习库,还是一个科学的计算包。
官方定义:
It’s a Python-based scientific computing package targeted at two sets of audiences:
** A replacement for NumPy to use the power of GPUs
** a deep learning research platform that provides maximum flexibility and speed
译文:
它是基于python的科学计算软件包,面向两组受众:
1.取代Numpy使用GPU的功能,【核心数据结构:Tensor ≈Numpy,选择Tensor的原因:①虎狼解释:通过使用适当的软件和硬件,张量可以加速各种数学运算,这些操作在深度学习中大量执行时,大大改变速度】
2.一个深度学习研究平台,可提供最大的灵活性和速度。【这也就是为什么PYtorch能在学术研究领域广为运用的原因】
PyTorch的魅力
全能小高手。
①pythonic编码风格方便学习和使用
②GPU加速
③分布式计算以及自动梯度计算的支持有利于从正向表达式开始自动执行反向传递
张量的介绍
张量只是给矩阵指定的一个奇特的名字,当然我们**广义的也可以认为一个张量是一个数字、向量、矩阵或者任何n维数组**。
如果熟悉Numpy数组则对于pytorch的张量就更加得心应手。因为它与NumPy’s ndarrays大部分是类似的。
标量值由0维张量表示,类似地,使用一维张量的列/行 矩阵,以此类推下去。
未雨绸缪
安装PyTorch
张量的实操
创建张量
思考出你的第一个张量:
1关键词:创建一维的张量
2.关键词:创建更大维度的张量
关键词:知晓张量的“形状”
关键词:“索引” 访问Tensor中的元素
①对一维的张量而言
②对于2D和3D的张量而言:
想要访问2D张量中的整行
除了一些常用的索引选择数据之外,PyTorch还提供了一些高级的选择函数:
index_select(input,dim,index) | 在制定维度dim上选取,比如选取某些行、某些列 |
---|---|
masked_select(input,mask) | 例子如上,a[a>0],使用ByteTensor进行选取 |
nonzero(input) | 非0元素的下标 |
gather(input,dim,index) | 根据index,在dim维度上选取数据,输出的size与index一样 |
5.关键词:数据类型
当我们创建张量的时候,PyTorch都会确定张量元素的数据类型,以便数据类型可以覆盖张量的所有元素,当然,我们也可以创建张量的时候指定数据类型覆盖它。
总结:
函数 | 功能 |
---|---|
Tensor(*sizes) | 基础构造函数 |
tensor(data) | 类似np.array的构造函数 |
ones(*sizes) | 全1Tensor |
zero(*sizes) | 全0Tensor |
eye(*sizes) | 对角线为1,其他为0 |
arrange(s,e,step) | 从s到e,步长为step |
linspace(s,e,steps) | 从s到e,均匀切分成steps份 |
rand/randn(*sizes) | 均匀/标准分布 |
normal(mean,std)/uniform(from,to) | 正态分布/均匀分布 |
randperm(m) | 随机排列 |
这些创建方法都可以在创建的时候指定数据类型dtype和存放device(cpui/gpu) |
**
下期预告:张量的算术运算和与Numpy数组的转换
**
元气满满的one day~
另外分享一些我今天喜欢的一些图片、文字~
我家的狗狗 点点and小灰
吐舌头的亚子 哈哈哈哈哈哈 可爱死了