深度学习(practice) Note.2
《神经网络与深度学习》第一章 实践基础 笔记
1.张量
1.1
定义:矩阵的扩展和延伸,高阶的矩阵。
用途:用来存放深度学习框架中的数据。
实例:1阶张量为向量,2阶张量为矩阵。可以有任意多的维度
规范:同一张量中所有元素的数据类型均相同
1.2创建
(1)通过指定的Python列表数据[2.0, 3.0, 4.0],创建一个一维张量。
(2)二维
即[ ]中包含两个一维
(3)以此类推,扩展到N维
注:任何一个维度的元素数量必须相同
1.2属性
Tensor.ndim:张量的维度,例如向量的维度为1,矩阵的维度为2。
Tensor.shape: 张量每个维度上元素的数量。
Tensor.shape[n]:张量第 n维的大小。第 n维也称为轴(axis)。
Tensor.size:张量中全部元素的个数。
创建一个四维张量,并打印出shape
、ndim
、shape[n]
、size
属性
1.2.2paddle.reshape
接口来改变张量的形状。
reshape的其他注意
- -1表示这个维度的值是从张量的元素总数和剩余维度推断出来的。有且只有一个维度可以被设置为-1。
- 0表示实际的维数是从张量的对应维数中复制出来的,shape中0所对应的索引值不能超过张量的总维度。
1.2.3 paddle.unsqueeze
将张量中的一个或多个维度中插入尺寸为1的维度
1.2.4数据类型
用Tensor.dtype查看,未指定默认整型int64与浮点型float32
1.2.5设备位置
place来指定其分配的设备位置。
三种:CPU、GPU和固定内存
1.3张量与Numpy数组的互相转换
paddle.to_tensor()
函数可以将Numpy数组转化为张量
通过Tensor.numpy()
函数将张量转化为Numpy数组
1.4
张量的一些数学运算
逻辑运算
矩阵运算
广播机制
广播机制主要遵循如下规则(参考Numpy广播机制):
1)每个张量至少为一维张量。
2)从后往前比较张量的形状,当前维度的大小要么相等,要么其中一个等于1,要么其中一个不存在。
广播机制的计算规则
两个张量进行广播后的结果张量的形状计算规则如下:
1)如果两个张量shape的长度不一致,那么需要在较小长度的shape前添加1,直到两个张量的形状长度相等。
2) 保证两个张量形状相等之后,每个维度上的结果维度就是当前维度上较大的那个。
矩阵乘法函数的广播规则:
1)如果两个张量均为一维,则获得点积结果。
2) 如果两个张量都是二维的,则获得矩阵与矩阵的乘积。
3) 如果张量x是一维,y是二维,则将x的shape转换为[1, D],与y进行矩阵相乘后再删除前置尺寸。
4) 如果张量x是二维,y是一维,则获得矩阵与向量的乘积。
5) 如果两个张量都是N维张量(N > 2),则根据广播规则广播非矩阵维度(除最后两个维度外其余维度)。比如:如果输入x是形状为[j,1,n,m]的张量,另一个y是[k,m,p]的张量,则输出张量的形状为[j,k,n,p]。
2.算子
是复杂模型的基底,是前向函数与反向函数的基本实现
。。。