欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 3-2 梯度与反向传播

3-2 梯度与反向传播

2024/10/23 21:27:21 来源:https://blog.csdn.net/weixin_62115482/article/details/140162903  浏览:    关键词:3-2 梯度与反向传播

3-2 梯度与反向传播

主目录点这里
梯度的含义
在这里插入图片描述
可以看到红色区域的变化率较大,梯度较大;绿色区域的变化率较小,梯度较小。
在二维情况下,梯度向量的方向指向函数增长最快的方向,而其大小表示增长的速率。
梯度的计算
在这里插入图片描述
在这里插入图片描述
当然我们不必学太深的纯运算,来看看python是怎么解决的

import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
def gradient(f, variables, point):gradients = [sp.diff(f, var) for var in variables]gradient_at_point = [grad.evalf(subs=dict(zip(variables, point))) for grad in gradients]return gradient_at_point# 定义变量
x, y = sp.symbols('x y')# 定义函数 f(x, y)
f = x**2 + y**2# 定义点
point = (3, 4)# 计算梯度
grad = gradient(f, [x, y], point)# 函数表达式转换为可计算的 lambda 函数
f_lambda = sp.lambdify((x, y), f, 'numpy')# 创建 x, y 数据
X = np.linspace(-5, 5, 400)
Y = np.linspace(-5, 5, 400)
X, Y = np.meshgrid(X, Y)# 计算 z 数据
Z = f_lambda(X, Y)# 创建图形
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')# 绘制表面图
ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.7)# 绘制梯度向量
# 在 point 点绘制梯度
ax.quiver(point[0], point[1], f_lambda(point[0], point[1]),grad[0], grad[1], 0, color='r', length=1.5, arrow_length_ratio=0.2)# 标记点
ax.scatter(point[0], point[1], f_lambda(point[0], point[1]), color='r', s=100)# 设置标签
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')# 标题
ax.set_title('Surface plot of f(x, y) = x^2 + y^2 with gradient vector at (3, 4)')plt.show()

在这里插入图片描述

反向传播
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com