Open Yukyukuon opened 3 years ago
开始记录视频P7,书2.2节。。。
张量的维度(dimension)通常叫作轴(axis) 可以用 ndim 属性来查看一个 Numpy 张量的轴的个数
Scalars (0D tensors) :标量,纯量 Vector (1D tensors) :向量 Matrices (2D tensors) :矩阵 3D tensors and higher-dimensional:
##四维张量的例子 import numpy as np x = np.random.randint(30, size=(3, 2, 2, 4)) ##第一个30为生成0-30的随机乱数 x.ndim ##直接显示维度 x.shap x
开始记录视频P7,书2.2节。。。
Tensors (张量)
张量的维度(dimension)通常叫作轴(axis)
可以用 ndim 属性来查看一个 Numpy 张量的轴的个数
Scalars (0D tensors) :标量,纯量
Vector (1D tensors) :向量
Matrices (2D tensors) :矩阵
3D tensors and higher-dimensional:
## Manipulating tensors in Numpy **Broadcasting (广播)** :当两个shape不同的张量进行运算时,会将维度较小的张量以复制的方式扩充得与另一个张量shape相同,再进行计算 **Tensor reshaping** :在不增减,不改变原有数据的情况下,改变原张量的形状 **np.transpose** :将矩阵转置
## Gradient Descent (梯度优化) 上一节的神经网络示例中,每个神经层都用下述方法对输入数据进行变换: **output = relu(dot(W, input) + b)** 表达式中,W和b都是张量,均为该层的属性。它们被称为该层的 **权重(Weight)** 或 **可训练参数(trainable parameter)**,分别对应 kernel 和 bias 属性。 一开始,这些权重矩阵取较小的随机值,这一步叫 **随机初始化(random initialization)**。当然,W和b都是随机的,relu(dot(W, input) + b) 肯定不会得到任何有用的表示。虽然得到的表示没有任何意义的,但这是一个起点。下一步则是根据反馈信号逐渐调节这些权重。这个逐渐调节的过程叫作**训练**,也是机器学习中的学习。 上述过程发生在一个**训练循环(Trainning loop)**内,其具体过程如下: 1. 抽取训练样本 x 和对应目标 y 组成的数据批量。 2. 在 x 上运行网络【这一步叫作 **向前传播(forward pass)**】,得到预测值 y_pred。 3. 计算网络在这批数据上的损失,用于衡量 y_pred 和 y 之间的距离。 4. 更新网络的所有权重,使网络在这批数据上的损失略微下降。 最终,使得预测值y_pred和预测目标y之间的距离非常小。 神经网络的公式: 𝜎(𝑤3𝜎(𝑤2𝜎(𝑤1𝑥+𝑏1)+𝑏2)+𝑏3)..... 梯度训练的方法: - **SGD** : 每次只丢一条数据去训练,这样就需要更新样本量集的次数 - **minibatch-SGD** : 小量梯度下降算法 - **batch-SGD** : 全量梯度下降算法 (一次性丢完所有资料) #### 牛顿法 N=1的简单情况 基本思想:在现有极小点估计值的附近对 f(x) 做二阶泰勒展开,进而找到极小点的下一个估计值 设 **xk** 为当前极小点的估计值,则