免费一键自助建站官网,公司网站内容,WordPress 收款方案,怎么做虚拟币网站AI学习指南深度学习篇-Adam的Python实践
在深度学习领域#xff0c;优化算法是影响模型性能的关键因素之一。Adam#xff08;Adaptive Moment Estimation#xff09;是一种广泛使用的优化算法#xff0c;因其在多种问题上均表现优异而被广泛使用。本文将深入探讨Adam优化器…AI学习指南深度学习篇-Adam的Python实践
在深度学习领域优化算法是影响模型性能的关键因素之一。AdamAdaptive Moment Estimation是一种广泛使用的优化算法因其在多种问题上均表现优异而被广泛使用。本文将深入探讨Adam优化器并提供详细的代码示例展示如何在Python的深度学习库如TensorFlow和PyTorch中实现Adam进行模型训练以及调参过程。
引言
优化算法的选择会影响深度学习模型的收敛速度和最终性能。Adam算法不仅结合了动量Momentum的优点还引入了自适应学习率这使得其在许多任务中表现良好。本文将通过实际代码示例介绍Adam的实现和调参过程让读者能够在自己的项目中有效应用这一算法。
Adam优化器概述
2.1 公式推导
Adam优化器的核心思想是计算梯度的动量以及梯度的平方动量并利用这两个动量来调整学习率。Adam的更新公式如下 初始化参数 ( m t 0 ) ( m_t 0 ) (mt0)一阶矩估计 ( v t 0 ) ( v_t 0 ) (vt0)二阶矩估计 ( t 0 ) ( t 0 ) (t0)时间步长 ( β 1 , β 2 ) ( \beta_1, \beta_2 ) (β1,β2)通常取值为0.90.999 ( ϵ ) ( \epsilon ) (ϵ)通常取小值以避免除零错误 参数更新 [ t t 1 ] [ t t 1 ] [tt1] [ m t β 1 ⋅ m t − 1 ( 1 − β 1 ) ⋅ g t ] [ m_t \beta_1 \cdot m_{t-1} (1 - \beta_1) \cdot g_t ] [mtβ1⋅mt−1(1−β1)⋅gt] [ v t β 2 ⋅ v t − 1 ( 1 − β 2 ) ⋅ g t 2 ] [ v_t \beta_2 \cdot v_{t-1} (1 - \beta_2) \cdot g_t^2 ] [vtβ2⋅vt−1(1−β2)⋅gt2] [ m ^ t m t 1 − β 1 t ] [ \hat{m}_t \frac{m_t}{1 - \beta_1^t} ] [m^t1−β1tmt] [ v ^ t v t 1 − β 2 t ] [ \hat{v}_t \frac{v_t}{1 - \beta_2^t} ] [v^t1−β2tvt] [ θ t θ t − 1 − α v ^ t ϵ ⋅ m ^ t ] [ \theta_{t} \theta_{t-1} - \frac{\alpha}{\hat{v}_t \epsilon} \cdot \hat{m}_t ] [θtθt−1−v^tϵα⋅m^t]
2.2 参数说明
学习率 ( ( α ) ) ((\alpha)) ((α))控制每次更新的步幅通常初始值设为0.001。 ( β 1 ) (\beta_1) (β1) 和 ( β 2 ) (\beta_2) (β2)分别控制一阶矩和二阶矩的衰减率。 ( ϵ ) (\epsilon) (ϵ)通常设为 ( 1 0 − 8 ) (10^{-8}) (10−8)避免在计算时出现除零错误。
在TensorFlow中使用Adam
3.1 环境准备
确保你的计算环境中安装了TensorFlow和其他必要的库
pip install tensorflow numpy matplotlib3.2 数据加载
我们将使用Keras提供的MNIST手写数字数据集作为示例
import tensorflow as tf
from tensorflow.keras import layers, models
import numpy as np
import matplotlib.pyplot as plt# 加载MNIST数据集
mnist tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) mnist.load_data()# 数据预处理
x_train x_train.astype(float32) / 255.0
x_test x_test.astype(float32) / 255.0
y_train tf.keras.utils.to_categorical(y_train, 10)
y_test tf.keras.utils.to_categorical(y_test, 10)3.3 构建模型
我们将定义一个简单的神经网络模型
def create_model():model models.Sequential()model.add(layers.Flatten(input_shape(28, 28)))model.add(layers.Dense(128, activationrelu))model.add(layers.Dropout(0.2))model.add(layers.Dense(10, activationsoftmax))return model3.4 训练模型
使用Adam优化器训练模型
model create_model()# 编译模型
model.compile(optimizeradam,losscategorical_crossentropy,metrics[accuracy])# 训练模型
history model.fit(x_train, y_train, epochs10, batch_size32, validation_split0.2)3.5 调整超参数
可以通过以下方式调整超参数比如修改学习率或尝试不同的批大小
from tensorflow.keras.optimizers import Adam# 创建自定义Adam优化器
adam Adam(learning_rate0.001)# 重新编译模型
model.compile(optimizeradam, losscategorical_crossentropy, metrics[accuracy])# 重新训练模型
history model.fit(x_train, y_train, epochs10, batch_size64, validation_split0.2)在PyTorch中使用Adam
4.1 环境准备
确保你的计算环境中安装了PyTorch和其他必要的库
pip install torch torchvision numpy matplotlib4.2 数据加载
与TensorFlow类似我们将使用同样的数据集
import torch
from torchvision import datasets, transforms
from torch import nn, optim# 数据预处理
transform transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])# 加载MNIST数据集
trainset datasets.MNIST(root./data, trainTrue, downloadTrue, transformtransform)
trainloader torch.utils.data.DataLoader(trainset, batch_size32, shuffleTrue)testset datasets.MNIST(root./data, trainFalse, downloadTrue, transformtransform)
testloader torch.utils.data.DataLoader(testset, batch_size32, shuffleFalse)4.3 构建模型
PyTorch模型构建如下
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 nn.Linear(28 * 28, 128)self.dropout nn.Dropout(0.2)self.fc2 nn.Linear(128, 10)def forward(self, x):x x.view(x.shape[0], -1) # 展平操作x torch.relu(self.fc1(x))x self.dropout(x)x self.fc2(x)return xmodel SimpleNN()4.4 训练模型
使用Adam优化器训练模型的示例如下
# 定义损失函数和优化器
criterion nn.CrossEntropyLoss()
optimizer optim.Adam(model.parameters(), lr0.001)# 训练模型
epochs 10
for epoch in range(epochs):running_loss 0for images, labels in trainloader:optimizer.zero_grad() # 清空梯度output model(images) # 前向传播loss criterion(output, labels) # 计算损失loss.backward() # 反向传播optimizer.step() # 更新参数running_loss loss.item()print(fEpoch {epoch 1}/{epochs} - Loss: {running_loss/len(trainloader)})4.5 调整超参数
在PyTorch中你也可以像在TensorFlow中那样调整超参数下面是修改学习率的例子
# 创建自定义Adam优化器
optimizer optim.Adam(model.parameters(), lr0.0001)# 重新训练模型
for epoch in range(epochs):running_loss 0for images, labels in trainloader:optimizer.zero_grad()output model(images)loss criterion(output, labels)loss.backward()optimizer.step()running_loss loss.item()print(fEpoch {epoch 1}/{epochs} - Loss: {running_loss/len(trainloader)})结论
Adam优化器因其良好的自适应性和快速的收敛能力成为深度学习中最流行的优化算法之一。在TensorFlow和PyTorch等深度学习框架中Adam均被用户广泛应用。本文详细介绍了在这两种框架中使用Adam优化器进行模型训练的完整流程并展示了如何在训练过程中灵活调整超参数。希望这篇文章能帮助你更好地理解和应用Adam优化器。尽管TensorFlow和PyTorch有其独特之处但选用合适的优化器对于模型的最终表现仍然至关重要。在实际应用中建议尝试多种优化算法并进行超参数调整以获得最佳的训练效果。
如果想了解更深入的Adam算法工作原理或其他优化算法的使用请关注后续更新继续学习更多的深度学习内容。 文章转载自: http://www.morning.rsjng.cn.gov.cn.rsjng.cn http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.ryjl.cn.gov.cn.ryjl.cn http://www.morning.sfswj.cn.gov.cn.sfswj.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.sjjtz.cn.gov.cn.sjjtz.cn http://www.morning.xxknq.cn.gov.cn.xxknq.cn http://www.morning.klltg.cn.gov.cn.klltg.cn http://www.morning.fblkr.cn.gov.cn.fblkr.cn http://www.morning.kjyqr.cn.gov.cn.kjyqr.cn http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn http://www.morning.btwlp.cn.gov.cn.btwlp.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.mxftp.com.gov.cn.mxftp.com http://www.morning.kncrc.cn.gov.cn.kncrc.cn http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn http://www.morning.lxbml.cn.gov.cn.lxbml.cn http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.xyyplp.cn.gov.cn.xyyplp.cn http://www.morning.mypxm.com.gov.cn.mypxm.com http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.gwgjl.cn.gov.cn.gwgjl.cn http://www.morning.ytfr.cn.gov.cn.ytfr.cn http://www.morning.lgmty.cn.gov.cn.lgmty.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.jzykw.cn.gov.cn.jzykw.cn http://www.morning.nqwz.cn.gov.cn.nqwz.cn http://www.morning.brkc.cn.gov.cn.brkc.cn http://www.morning.fktlg.cn.gov.cn.fktlg.cn http://www.morning.ygth.cn.gov.cn.ygth.cn http://www.morning.bnmrp.cn.gov.cn.bnmrp.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.srckl.cn.gov.cn.srckl.cn http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn http://www.morning.gjlst.cn.gov.cn.gjlst.cn http://www.morning.gediba.com.gov.cn.gediba.com http://www.morning.nxzsd.cn.gov.cn.nxzsd.cn http://www.morning.nd-test.com.gov.cn.nd-test.com http://www.morning.rbnj.cn.gov.cn.rbnj.cn http://www.morning.cbvlus.cn.gov.cn.cbvlus.cn http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn http://www.morning.ngzkt.cn.gov.cn.ngzkt.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.bpncd.cn.gov.cn.bpncd.cn http://www.morning.tbnn.cn.gov.cn.tbnn.cn http://www.morning.rzjfn.cn.gov.cn.rzjfn.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.xbwqg.cn.gov.cn.xbwqg.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.jkbqs.cn.gov.cn.jkbqs.cn http://www.morning.rlbc.cn.gov.cn.rlbc.cn http://www.morning.dpmkn.cn.gov.cn.dpmkn.cn http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.clpdm.cn.gov.cn.clpdm.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.junmap.com.gov.cn.junmap.com http://www.morning.lxfdh.cn.gov.cn.lxfdh.cn http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn http://www.morning.grtwn.cn.gov.cn.grtwn.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.yrwqz.cn.gov.cn.yrwqz.cn http://www.morning.ncrk.cn.gov.cn.ncrk.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.tcylt.cn.gov.cn.tcylt.cn