2026/1/11 5:18:08
网站建设
项目流程
淘淘乐网站建设,网站排名优化外包价钱,仿腾讯网站源码,外贸seo网站大全目录
摘要
1.神经网络的梯度计算
2.梯度下降法#xff08;Gradient Descent#xff09; 摘要 本篇文章继续学习尚硅谷深度学习教程#xff0c;学习内容是神经网络的梯度计算#xff0c;代码实现用梯度下降法 1.神经网络的梯度计算
在神经网络的学习中#xff0c;梯度的…目录摘要1.神经网络的梯度计算2.梯度下降法Gradient Descent摘要本篇文章继续学习尚硅谷深度学习教程学习内容是神经网络的梯度计算代码实现用梯度下降法1.神经网络的梯度计算在神经网络的学习中梯度的计算非常重要。神经网络中的梯度指的就是损失函数关于权重参数的梯度。我们以一个单层的简单网络为例形状为2×3权重参数为W损失函数记为L。那么它的权重参数和梯度为:这里梯度也是一个2×3的矩阵其中各个元素由L关于W中各元素的偏导数构成。代码如下import numpy as np from common.functions import softmax,cross_entropy_error from common.gradient import numerical_gradient class simpleNet: def __init__(self): self.W np.random.randn(2,3) def forward(self, x): a x self.W return softmax(a) def loss(self, x, t): y self.forward(x) loss cross_entropy_error(y, t) return loss x np.array([0.6, 0.9]) t np.array([0, 0, 1]) net simpleNet() f lambda w: net.loss(x, t) dW numerical_gradient(f, net.W) print(dW)测试2.梯度下降法Gradient Descent梯度下降法Gradient Descent是一种用于最小化目标函数的迭代优化算法。核心是沿着目标函数如损失函数的负梯度方向逐步调整参数从而逼近函数的最小值。梯度方向指示了函数增长最快的方向因此负梯度方向是函数下降最快的方向。具体来说我们初始找到函数f(x1,x2)的一个点(x1,x2)按下式进行更新这样就可以沿着负梯度方向找到一个新的点(x1,x2)让函数值更小。这里的η表示每次的更新量在神经网络的学习过程中就代表了一次学习的步长一次学习多少、多大程度去更新参数称为学习率learning rate。学习率需要预先设定好过大或过小都会导致学习效果不佳。梯度下降法可以代码实现如下import numpy as np import matplotlib.pyplot as plt from common.gradient import numerical_gradient def gradient_descent(f, init_x, lr0.01, step_num100): x init_x #保存x变化 x_history [] for i in range(step_num): x_history.append( x.copy() ) grad numerical_gradient(f, x) x - lr * grad return x, np.array(x_history)案例测试#定义目标函数fxx1^2x2^2 def f(x): return x[0]**2 x[1]**2 if __name__ __main__: init_xnp.array([-3.0,4.0]) #超参数 lr0.1 num_iter20 #梯度下降法计算最小值 x, x_history gradient_descent(f, init_x, lr, num_iter) print(最小值点为,x)测试