介绍了PyTorch基础,包括以下内容:一. Tensor-Pytorch基础数据结构; 二. Tensor索引及操作; 三. Tensor与Numpy的互操作; 四. Tensor on GPU; 五. Tensor operations
如图所示,图片中有大海和太阳,图片的原始形态实际上就是对像素的采样出来的一个矩阵,在这个矩阵中,每个元素都是[0, 255]的像素值(机器学习或者深度学习中一般将将其浮点数化,即将其变为[0, 1]或者[-1, 1])。将这张图片放入神经网络中,结果出来的OUTPUT为一个矩阵Softmax,矩阵中的向量值范围为[0, 1]。其中每个向量代表着对应标签的概率值,例如“太阳”、“海边”、“风景”等等。从以上例子可以看出,深度学习其实就是根据样本评判标签的过程。
(1) Scalar
称为0维的Tensor。如上图所示,“3”就是一个标量。
(2) Vector
称为1维的Tensor。如上图所示,X[2]代表Vector中第3个元素,即“5”。
(3) Matrix
称为2维的Tensor。如上图所示,X[1, 0]代表Matrix中第3行第1列的元素,即“7”。
(4) 3-D Tensor
可以将其理解为将多个向量“摞”起来。如上图所示,X[0, 2, 1]代表3-D Tensor中第1个矩阵的第3行第2列的元素,即“5”。(注: 对于不同的任务,怎么表示是由自己定义的,例如X[0, 2, 1]也可以代表3-D Tensor中第1个矩阵的宽度为3,高度为2的元素,即“3”。)
(5) 多维Tensor
多维的Tensor。如上图所示,X[…]代表从最外围的一层一直延伸到最里边一层的元素。
查看conda环境有哪些:
conda env list
在图形界面启动Jupyter Notebook
(1) 生成一个每个元素都为1的矩阵
(3) Scalar(0-D Tensors): 0维的Tensor
(4) Vectors(1-D Tensors): 1维的Tensor,即向量的形式
(5) Matrix(2-D Tensors): 2维的Tensor,即矩阵的形式
注:
(1) 32位浮点型
torch.float32 or torch.float——32-bit floating-point
(2) 64位浮点型
torch.float64 or torch.double——64-bit, double-precision floating-point
(3) 16位浮点型
torch.float16 or torch.half——16-bit, half-precision floating-point
(4) 8位整型(有符号)
torch.int8——Signed 8-bit integers
(5) 8位整型(有符号)
torch.uint8——Unsigned 8-bit integers
(6) 16位整型(无有符号)
torch.int16 or torch.short——Signed 16-bit integers
(7) 32位整型(有符号)
torch.int32 or torch.int——Signed 32-bit integers
(8) 64位整型(有符号)
torch.int64 or torch.long——Signed 64-bit integers
注: 切片操作为左闭右开
(3) 局部截取(切片操作),高: 25~175; 宽: 60,130; 第0个通道切片
注: PyTorch使用pickle序列化Tensors对象,存储的文件其它应用无法使用。
注: 序列化成为h5py形式的数据时,任何类型的框架或者方法都可以读,但是只能用Tensor或者PyTorch来存储或者打开。
注: 神经网络完全由Tensor operations组成
注: view(1, -1),其中前面的“1”表示将其变为1行,后面的“-1”表示如果不知道有几列,那么直接用“-1”代替即可,相当于“b = a.view(1, 6)”。
注: a被定义完是Python中List的形式,所以必须要转换成Tensor的形式
注: 调用该方法计算梯度,如果Tensor为标量,则该方法不需要参数,如果Tensor为向量,则该方法需要一个tensor作为参数。