【pytorch深度学习实践】笔记—03.2.随机梯度下降

简介: 【pytorch深度学习实践】笔记—03.2.随机梯度下降

1.背景及思路

【思想】

1.使用梯度下降是可以解决大多数问题的,但是遇到“鞍点”问题无法解决。

2.使用梯度下降更新权重w的时候,对于每一个w,计算cost损失、计算梯度的时候,都要对所有样本[x1,y1]、[x2, y2]……[xn,yn]求cost损失和梯度的均值。实际上我们最主要的目标是找到最接近的w的值,只要多训练几次,对于cost和梯度取不取均值,没有太大区别。所以没有必要把计算时间都浪费在cost和梯度的均值上。所以引入随机梯度。

3.即:第一次用[x1,y1]这组数据计算梯度、更新w;第二次用[x2,y2]这组数据计算梯度、更新w……以此类推,每次随机抽取的用来计算梯度的样本[xn,yn]不是固定的,所以叫做随机梯度下降。


2.pytorch全套代码

import matplotlib.pyplot as plt
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]
# 初始化权重
w = 1.0
# 定义模型
def forward(x):
    return x * w
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) ** 2
# 定义梯度计算方法(使用随机梯度下降)
def gradient(xs, ys):
    return 2 * x * (x * w - y)
# 最终绘制图像的x
epoch_list = []
cost_list = []
print ('Predict (before training)', 4 , forward(4))
for epoch in range(100):
    for x, y in zip(x_data, y_data):
        grad = gradient(x, y)
        w = w - 0.01 * grad
        print("\t x=", x, "y=", y, "grade:", grad)
        l = loss(x, y)
    print(' Epoch:', epoch, ' w=', w, ' loss=', l)
    epoch_list.append(epoch)
    cost_list.append(l)
print('Predict (after training)', 4, forward(4))
# 绘图
plt.plot(epoch_list, cost_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show()

3.展示pytorch绘制的图像(epoch-loss)

从图中可以发现,当训练epoch次数增加的时候,损失值会越来越小。

此时打印4 和forward(4),就会得到forward(4)的值接近于8。所以权重w=y/x=2

b0f454fbc374c6b99f8c423112faf830_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM4MDY4ODc2,size_16,color_FFFFFF,t_70#pic_center.png

目录
打赏
0
0
0
0
0
分享
相关文章
深度学习实践技巧:提升模型性能的详尽指南
深度学习模型在图像分类、自然语言处理、时间序列分析等多个领域都表现出了卓越的性能,但在实际应用中,为了使模型达到最佳效果,常规的标准流程往往不足。本文提供了多种深度学习实践技巧,包括数据预处理、模型设计优化、训练策略和评价与调参等方面的详细操作和代码示例,希望能够为应用实战提供有效的指导和支持。
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
186 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
226 6
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
PyTorch FlexAttention技术实践:基于BlockMask实现因果注意力与变长序列处理
本文介绍了如何使用PyTorch 2.5及以上版本中的FlexAttention和BlockMask功能,实现因果注意力机制与填充输入的处理。通过attention-gym仓库安装相关工具,并详细展示了MultiheadFlexAttention类的实现,包括前向传播函数、因果掩码和填充掩码的生成方法。实验设置部分演示了如何组合这两种掩码并应用于多头注意力模块,最终通过可视化工具验证了实现的正确性。该方法适用于处理变长序列和屏蔽未来信息的任务。
96 17
揭秘人工智能:深度学习的奥秘与实践
在本文中,我们将深入浅出地探索深度学习的神秘面纱。从基础概念到实际应用,你将获得一份简明扼要的指南,助你理解并运用这一前沿技术。我们避开复杂的数学公式和冗长的论述,以直观的方式呈现深度学习的核心原理和应用实例。无论你是技术新手还是有经验的开发者,这篇文章都将为你打开一扇通往人工智能新世界的大门。
深度学习中的自编码器:从理论到实践
在这篇文章中,我们将深入探讨深度学习的一个重要分支——自编码器。自编码器是一种无监督学习算法,它可以学习数据的有效表示。我们将首先介绍自编码器的基本概念和工作原理,然后通过一个简单的Python代码示例来展示如何实现一个基本的自编码器。最后,我们将讨论自编码器的一些变体,如稀疏自编码器和降噪自编码器,以及它们在实际应用中的优势。
揭秘AI:深度学习的奥秘与实践
本文将深入浅出地探讨人工智能中的一个重要分支——深度学习。我们将从基础概念出发,逐步揭示深度学习的原理和工作机制。通过生动的比喻和实际代码示例,本文旨在帮助初学者理解并应用深度学习技术,开启AI之旅。
深入浅出深度学习:从理论到实践的探索之旅
在人工智能的璀璨星空中,深度学习如同一颗耀眼的新星,以其强大的数据处理能力引领着技术革新的浪潮。本文将带您走进深度学习的核心概念,揭示其背后的数学原理,并通过实际案例展示如何应用深度学习模型解决现实世界的问题。无论您是初学者还是有一定基础的开发者,这篇文章都将为您提供宝贵的知识和启发。
82 5

热门文章

最新文章