(自学《Deep-Learning-with-PyTorch》使用,仅供参考)
一、绪论
深度学习应用是以某种形式(图片或文本)获取数据,然后以另一种形式(标签、数字或更多的图像或文本)生成数据。
深度学习实际上是建立一个系统,该系统可以将数据一种表示转换为另一种表示。
我们首先学习如何使用Tensor处理PyTorch中所有的浮点数。
二、将输入转换为浮点数
浮点数是网络处理信息的方式,因此我们需要将现实世界中的数据编码成网络可以消化的形式,然后将输出再解码为我们可以理解并使用的数据。(类似于 A/D-D/A)
例如:【花】——【10010111】——【花】
如图所示,深度神经网络通常分阶段的学习从一种形式的数据(INPUT)到另一种形式的数据(OUTPUT)的转换,而在这个阶段的中间,一些部分转换的数据可以认为是中间表示(INTERMEDIATE REPRESENTATIONS)。
对于早期的图像识别,这些中间表示(INTERMEDIATE REPRESENTATIONS)可以是边缘检测或某些纹理,更深层次一点,它们可以是更复杂的结构,比如耳朵、眼睛等。
中间表示(INTERMEDIATE REPRESENTATIONS)是浮点数的集合。这些浮点数以一种有利于描述神经网络输入如何映射到输出的方式表征了输入并捕获了数据结构。
这些浮点数的结合和它们的操作就是现代人工智能的核心。
图中的中间表示(INTERMEDIATE REPRESENTATIONS)是输入与前一层神经元权重(Weight)结合的产物。
每个中间表示(INTERMEDIATE REPRESENTATIONS)对于它之前的输入都是唯一的。
PyTorch利用Tensor将输入,中间表示、输出处理和存储。
三、Tensor(张量)
在深度学习背景下,Tensor是向量和矩阵泛化到任意维数,所以,也可以叫Tensor为多维数组(multidimensional array)。
注意,Tensor不是唯一处理多维数组的库,目前最流行的多维数组库是Numpy,它被认为是数据科学的通用语言。
但Tensor有一些Numpy没有的优势,比如它可以在图像处理单元(GPU)上快速执行操作,可以在多个设备或机器分布操作,还可以跟踪创建它们的计算图(the graph of computations)。
PyTorch提供了和Numpy的无缝互操作性,这使得PyTorch能与Python中的其他科学库进行一流的集成。
比如:
SciPy:www.scipy.org
Scikit-learn :https://scikit-learn.org
Pandas :https://pandas.pydata.org
Tensor的维数与用于引用Tensor内标量值(scalar values)的数目相一致。