首页 > 其他分享 >optim.SGD

optim.SGD

时间:2023-08-15 14:56:04浏览次数:33  
标签:loss optim series train 动量 SGD

链接:https://www.zhihu.com/question/585468191/answer/2905219147

optim.SGD是PyTorch中的一个优化器,其实现了随机梯度下降(Stochastic Gradient Descent,SGD)算法。在深度学习中,我们通常使用优化器来更新神经网络中的参数,以使得损失函数尽可能地小。

在PyTorch中使用optim.SGD优化器,一般需要指定以下参数:

  • params:需要更新的参数,通常为模型中的权重和偏置项。
  • lr:学习率,即每次参数更新时的步长。
  • momentum:动量,用来加速模型收敛速度,避免模型陷入局部最优解。
  • dampening:动量衰减,用来控制动量的衰减速度。
  • weight_decay:权重衰减,用来防止模型过拟合,即通过对权重的L2正则化来约束模型的复杂度。
  • nesterov:是否使用Nesterov动量。

在优化过程中,optim.SGD会根据当前的梯度和学习率计算出每个参数的更新量,并更新模型的参数。更新量的计算公式如下:

v(t) = momentum * v(t-1) - lr * (grad + weight_decay * w(t))
 w(t) = w(t-1) + v(t)

其中,v(t)表示当前时刻的速度,v(t-1)表示上一个时刻的速度,grad表示当前时刻的梯度,w(t)表示当前时刻的权重,w(t-1)表示上一个时刻的权重。

optim.SGD算法中的动量(momentum)可以看作是一个惯性项,用来在参数更新时保留之前的状态。当梯度方向发生改变时,动量能够加速模型收敛,并降低震荡。Nesterov动量可以在动量的基础上进一步优化模型的性能,它会先根据上一个时刻的速度来计算下一个时刻的梯度,然后再更新参数。

需要注意的是,在使用optim.SGD时,要适当调整学习率和动量等超参数,以便在训练中达到更好的性能。

e.g:

# 神经网络框架搭建
    net = InceptionBlock(num_classes=2, in_channels=1, init_weights=True)
    net.to(device)
    # 损失函数
    loss_function = nn.CrossEntropyLoss()
    # 优化器
    optimizer = optim.SGD(net.parameters(), lr=0.003, momentum=0.9)

    epochs = 50  # 迭代次数
    best_acc = 0.0  # 精度

    # 网络结构保存路径
    save_path = '../model/signal_classes.pth'

    train_steps = len(train_loader)
    for epoch in range(epochs):
        # 开启训练模式
        net.train()
        running_loss = 0.0
        train_bar = tqdm(train_loader)
        for step, data in enumerate(train_bar):
            signal_series, label_series = data
            signal_series = signal_series.reshape(batch_size, 1, 1200)
            # 优化器归零
            optimizer.zero_grad()
            # 模型计算
            model_predict = net(signal_series.to(device))
            # 计算损失函数
            loss = loss_function(model_predict, f.one_hot(label_series - 1, num_classes=2).float())
            # 反向传播计算
            loss.backward()
            # 优化器迭代
            optimizer.step()
            # 损失计算
            running_loss += loss.item()
            # 进度条计算
            train_bar.desc = "train epoch[{}/{}] loss:{:.3f}".format(epoch + 1,
                                                                     epochs,
                                                                     loss)

 

标签:loss,optim,series,train,动量,SGD
From: https://www.cnblogs.com/pass-ion/p/17631276.html

相关文章

  • 基于 NNCF 和 Optimum 面向 Intel CPU 对 Stable Diffusion 优化
    基于隐空间的扩散模型(LatentDiffusionModel),是解决文本到图片生成问题上的颠覆者。StableDiffusion是最著名的一例,广泛应用在商业和工业。StableDiffusion的想法简单且有效:从噪声向量开始,多次去噪,以使之在隐空间里逼近图片的表示。但是,这样的方法不可避免地增加了推理......
  • AtCoder Regular Contest 164 E Segment-Tree Optimization
    洛谷传送门AtCoder传送门妙妙题。我们考虑如何方便地描述一棵广义线段树。不难想到使用断点描述,即对于一个结点\([l,r]\),它的左右儿子分别是\([l,mid],[mid+1,r]\),其中\(mid\in[l,r-1]\),然后把一层缩成一个\(2^{d-1}\)的序列,每一层都是上层对应结点的\(mid......
  • 论文阅读 | Penetration Testing Active Reconnaissance Phase – Optimized Port Sca
    我们可以使用TCP端口扫描对物联网设备进行分类吗?https://ieeexplore.ieee.org/document/8913346 1介绍在[10]中,我们根据统计属性(如活动周期,端口号,信令模式和密码套件)来表征物联网流量。此外,提出了一个多阶段机器学习模型,使用从配备特殊硬件加速(例如NetFlow)的网络交换机......
  • optimize table 治理mysql 高水位和空间碎片
    问题背景随着系统上线时间的增长,mysql数据库的数据目录的文件系统使用率已经快要耗尽。从最初的两三个月truancate一次日志表,到最后每周要truancate多次日志表。业务侧将数据库中历史数据(超过全部数据的2/3)逐渐进行了迁移(采用目标库insert,源库delete的方式),这些表中有多个超过1......
  • Python信贷风控模型:Adaboost,XGBoost,SGD, SVC,随机森林, KNN预测信贷违约支付|附代码
    要求撰写关于信贷风控模型的研究报告,包括一些图形和统计输出。在此数据集中,我们必须预测信贷的违约支付,并找出哪些变量是违约支付的最强预测因子?以及不同人口统计学变量的类别,拖欠还款的概率如何变化?有25个变量:ID: 每个客户的IDLIMIT_BAL: 金额SEX: 性别(1=男,2=女)4.教育程......
  • Comparing with traditional convex optimization methodology, what are advantages
    与传统的凸优化方法相比,粒子群算法有哪些优点 与传统的凸优化方法相比,粒子群优化(PSO)算法具有以下优点:全局搜索能力:PSO算法具有较强的全局搜索能力,能够在多个解空间中寻找最优解。由于粒子群在搜索过程中可以通过信息共享和合作,有助于避免陷入局部最优解。适应性和......
  • MySQL 磁盘爆了,是 optimize table 的锅
    2023-06-26 22:17左右,收到某系统的主库磁盘使用率告警。2023-06-26 23:02左右收到该系统的从库磁盘使用率告警。收到告警后,登录数据库查看各表的磁盘使用。经分析发现DB存在一个当日的备份表t_eap_sys_navigation_log_bak_20230626 ,且在OS层面存在 命名异常的表文件(#开......
  • Optimizing Disk I/O tmp_table_size max_heap_table_size 磁盘使用率
     RDSMySQL临时文件导致实例磁盘空间满且出现“锁定中”状态https://help.aliyun.com/document_detail/101763.htmlRDSMySQL临时文件导致实例磁盘空间满且出现“锁定中”状态更新时间:2023-05-2611:22产品详情相关技术圈 问题描述阿里云云数据库RDSMySQL......
  • 基于粒子群的PMU优化配置,是一个使用粒子群优化算法(Particle Swarm Optimization, PSO
    基于粒子群的PMU优化配置软件:MATLAB介绍:电力系统PMU优化配置,为了使电力系统达到完全可观,以PMU配置数量最少为目标函数,运用粒子群算法进行优化处理,在IEEE303957118系统进行仿真验证。这段代码是一个使用粒子群优化算法(ParticleSwarmOptimization,PSO)来解决IEEE39节点电力......
  • Hessian Free Optimization——外国网友分享的“共轭梯度”的推导
    外国网友分享的“共轭梯度”的推导:https://andrew.gibiansky.com/blog/machine-learning/hessian-free-optimization/  =====================================  系数矩阵为Hessian矩阵时的使用Pearlmuttertrick的共轭梯度解法   Ax=b的迭代解法——......