【飞桨paddlepaddle学习笔记(二)
在深度学习模型的训练过程中,一个训练数据的各个维度对最终的结果都会产生不同的影响,这个维度的影响可以用一个具体的数来表示,这篇文章中我称之为“权重”。为了使模型的输出更符合预期的结果,我们需要不断调整权重的大小。调整权重最常用的方法就是梯度下降算法。 我们假设一个数据只有两个维度,即权重w为一个二维向量,权重调节参数b也为一个二维向量。训练的关键在于找到一组(w,b),使得损失函数loss最小,即使得损失函数L=L(w,b)最小。 一般梯度下降法: 实现梯度下降算法的步骤如下: 随机选取[w,b]的一组初始值; 寻找下一个[w,b]的值[w1,b1],使得Loss(w1,b1) < Loss(w,b) 重复第二步,直到Loss函数不再下降 计算梯度 (1)损失函数定义如下: 其中zi是xi的预测值: (2)梯度定义: 由此可以计算出L对w和b的偏导数 将最终结果写成代码: class Network(object): def __init__(self, num_of_weights): # 随机产生w的初始值 # 为了保持程序每次运行结果的一致性,此处设置固定的随机数种子 np.random.seed(0) self.w = np.random.randn(num_of_weights, 1) self.b = 0. def forward(self, x): z = np