37.深度学习中的梯度下降法及其实现

在深度学习的优化过程中,梯度下降法及其变体是必不可少的工具。通过对梯度下降法的理论学习,我们能够更好地理解深度学习模型的训练过程。本篇文章将介绍梯度下降的基本原理,并通过代码实现展示其具体应用。我们会从二维平面的简单梯度下降开始,逐步过渡到三维,再对比多种优化器的效果。

一、梯度下降法简介

梯度下降法(Gradient Descent)是一种常用的优化算法,广泛应用于机器学习和深度学习中。其基本思想是通过迭代更新参数,使得损失函数逐步减小,最终找到最优解。常见的梯度下降法包括随机梯度下降(SGD)、动量法(Momentum)、自适应学习率方法(Adagrad、RMSprop、Adadelta)和Adam等。

二、梯度下降的二维实现

首先,我们来实现一个简单的二维平面内的梯度下降法。目标是找到函数 \(f(x) = x^2 + 4x + 1\) 的最小值。

import torch
import matplotlib.pyplot as plt

# 定义目标函数
def f(x):
    return x**2 + 4*x + 1

# 初始化参数
x = torch.tensor([2.0], requires_grad=True)
learning_rate = 0.7

# 记录每次梯度下降的值
xs, ys = [], []

# 梯度下降迭代
for i in range(100):
    y = f(x)
    y.backward()
    
    with torch.no_grad():
        x -= learning_rate * x.grad
        x.grad.zero_()
    
    xs.append(x.item())
    ys.append(y.item())

# 打印最终结果
print(f"最终x值: {x.item()}")

# 可视化
x_vals = torch.linspace(-4, 2, 100)
y_vals = f(x_vals)
plt.plot(x_vals.numpy(), y_vals.numpy(), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值