pyro ExponentialLR 如何设置优化器 optimizer的学习率 pytorch 深度神经网络 bnn,

 第一。pyro 不支持 “ReduceLROnPlateau” ,因为需要Loss作为输入数值,计算量大

pytorch的学习率调整 视频 看这个博主的视频

05-01-学习率调整策略_哔哩哔哩_bilibili

第二 ,svi 支持 scheduler注意点,

属于  pyro.optim.PyroOptim的有三个
AdagradRMSProp ClippedAdam DCTAdam,但是还是会报错,类似下面的错误

optimizer = pyro.optim.SGD
# 指数下降学习率
pyro_scheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': learn_rate}, 'gamma': 0.1})
Traceback (most recent call last):File "/home/aistudio/bnn_pyro_fso_middle_2_16__256.py", line 441, in <module>svi = SVI(model, mean_field_guide, optimizer, loss=Trace_ELBO())File "/home/aistudio/external-libraries/pyro/infer/svi.py", line 72, in __init__raise ValueError(
ValueError: Optimizer should be an instance of pyro.optim.PyroOptim class.

正确的方法是 

optimizer = torch.optim.SGD
# 指数下降学习率
pyro_scheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': learn_rate}, 'gamma': 0.1})# 设置ReduceLROnPlateau调度器
# 在这个例子中,`'min'`模式表示当验证集上的损失停止下降时,学习率会降低。`factor=0.1`表示学习率会乘以0.1,`
# patience=10`表示如果验证集损失在连续10个epochs内没有改善,则降低学习率。
# scheduler = ReduceLROnPlateau(optimizer, 'min', factor=0.5, patience=20, verbose=True)# svi = SVI(model, mean_field_guide, optimizer, loss=Trace_ELBO())
svi = SVI(model, mean_field_guide, pyro_scheduler, loss=Trace_ELBO())

ExponentialLR

ExponentialLR是指数型下降的学习率调节器,每一轮会将学习率乘以gamma,所以这里千万注意gamma不要设置的太小,不然几轮之后学习率就会降到0。

lr_scheduler = lr_scheduler.ExponentialLR(optimizer, gamma=0.9)
# 按指数衰减调整学习率,调整公式:lr = lr*gamma**epoch

这是一个用于动态生成参数的调整学习率的包装器,用于 `torch.optim.lr_scheduler` 对象。

    :param scheduler_constructor: 一个 `torch.optim.lr_scheduler` 的类
    :param optim_args: 一个包含优化器学习参数的字典,或者是一个返回此类字典的可调用对象。必须包含键 'optimizer',其值为 PyTorch 优化器的值
    :param clip_args: 一个包含 `clip_norm` 和/或 `clip_value` 参数的字典,或者是一个返回此类字典的可调用对象。

    例子::

        optimizer = torch.optim.SGD
        scheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': 0.01}, 'gamma': 0.1})
        svi = SVI(model, guide, scheduler, loss=TraceGraph_ELBO())
        for i in range(epochs):
            for minibatch in DataLoader(dataset, batch_size):
                svi.step(minibatch)
            scheduler.step()
 

"""
A wrapper for :class:`~torch.optim.lr_scheduler` objects that adjusts learning rates
for dynamically generated parameters.:param scheduler_constructor: a :class:`~torch.optim.lr_scheduler`
:param optim_args: a dictionary of learning arguments for the optimizer or a callable that returnssuch dictionaries. must contain the key 'optimizer' with pytorch optimizer value
:param clip_args: a dictionary of clip_norm and/or clip_value args or a callable that returnssuch dictionaries.Example::optimizer = torch.optim.SGDscheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': 0.01}, 'gamma': 0.1})svi = SVI(model, guide, scheduler, loss=TraceGraph_ELBO())for i in range(epochs):for minibatch in DataLoader(dataset, batch_size):svi.step(minibatch)scheduler.step()

pyro.optim.lr_scheduler的源代码

# Copyright (c) 2017-2019 Uber Technologies, Inc.
# SPDX-License-Identifier: Apache-2.0from typing import Any, Dict, Iterable, List, Optional, Union, ValuesViewfrom torch import Tensorfrom pyro.optim.optim import PyroOptimclass PyroLRScheduler(PyroOptim):"""A wrapper for :class:`~torch.optim.lr_scheduler` objects that adjusts learning ratesfor dynamically generated parameters.:param scheduler_constructor: a :class:`~torch.optim.lr_scheduler`:param optim_args: a dictionary of learning arguments for the optimizer or a callable that returnssuch dictionaries. must contain the key 'optimizer' with pytorch optimizer value:param clip_args: a dictionary of clip_norm and/or clip_value args or a callable that returnssuch dictionaries.Example::optimizer = torch.optim.SGDscheduler = pyro.optim.ExponentialLR({'optimizer': optimizer, 'optim_args': {'lr': 0.01}, 'gamma': 0.1})svi = SVI(model, guide, scheduler, loss=TraceGraph_ELBO())for i in range(epochs):for minibatch in DataLoader(dataset, batch_size):svi.step(minibatch)scheduler.step()"""def __init__(self,scheduler_constructor,optim_args: Union[Dict],clip_args: Optional[Union[Dict]] = None,):# pytorch schedulerself.pt_scheduler_constructor = scheduler_constructor# torch optimizerpt_optim_constructor = optim_args.pop("optimizer")# kwargs for the torch optimizeroptim_kwargs = optim_args.pop("optim_args")self.kwargs = optim_argssuper().__init__(pt_optim_constructor, optim_kwargs, clip_args)def __call__(self, params: Union[List, ValuesView], *args, **kwargs) -> None:super().__call__(params, *args, **kwargs)def _get_optim(self, params: Union[Tensor, Iterable[Tensor], Iterable[Dict[Any, Any]]]):optim = super()._get_optim(params)return self.pt_scheduler_constructor(optim, **self.kwargs)def step(self, *args, **kwargs) -> None:"""Takes the same arguments as the PyTorch scheduler(e.g. optional ``loss`` for ``ReduceLROnPlateau``)"""for scheduler in self.optim_objs.values():scheduler.step(*args, **kwargs)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/417618.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0到1深入理解vite

一、什么是构建工具 ts:如果遇到ts文件&#xff0c;我们需要使用tsc把ts转换为jsreact/vue &#xff1a; 安装react-compiler、vue-conplier 将我们写的jsx或者vue文件转换成render函数less/sass/postcss/somponent-style:我们又需要less-loader、sass-loader等一系列编译工具…

目标检测-RT-DETR

RT-DETR (Real-Time Detection Transformer) 是一种结合了 Transformer 和实时目标检测的创新模型架构。它旨在解决现有目标检测模型在速度和精度之间的权衡问题&#xff0c;通过引入高效的 Transformer 模块和优化的检测头&#xff0c;提升了模型的实时性和准确性。RT-DETR 可…

Ceph RBD使用

CephRBD使用 一、RBD架构说明二、RBD相关操作1、创建存储池2、创建img镜像2.1 创建镜像2.1.2 查看镜像详细信息2.1.3 镜像其他特性2.1.4 镜像特性的启用和禁用 3、配置客户端使用RBD3.1 客户端配置yum源3.2 客户端使用admin用户挂载并使用RBD3.2.1 同步admin账号认证文件3.2.2 …

社交媒体的智能变革:Facebook AI优化用户体验

Facebook作为全球领先的社交平台&#xff0c;一直致力于通过人工智能&#xff08;AI&#xff09;技术提升用户体验。AI技术在Facebook的应用涵盖了推荐系统、自然语言处理、广告投放和用户反馈等多个方面&#xff0c;使平台的互动和内容体验更加智能和个性化。 推荐系统的智能化…

结构型设计模式—外观模式

结构型设计模式—外观模式 在软件开发的过程中&#xff0c;你是否遇到过这样的情况&#xff1a;你需要调用一个复杂系统中的多个模块&#xff0c;而每个模块都有自己的接口和使用方法&#xff0c;这让你不得不面对复杂的调用逻辑和大量的冗余代码&#xff1f;这时候&#xff0…

【网络安全】XSS+OTP绕过+账户接管

未经许可,不得转载。 文章目录 正文XSSOTP绕过账户接管正文 目标:www.example.com XSS 不断寻找可能存在XSS的点位。 终于,在个人资料页面:www.example.com/profile_details.php?userid= ,使用Payload<script>alert(1)</script>,实现XSS: 因此,能够实…

vxe-table——实现table 动态显示 +冻结列等功能——技能提升

之前我也有写过类似的功能&#xff0c;就是可以自定义勾选需要展示的列。 不过之前是我自己写的弹窗处理的&#xff0c;有现成的插件vex-table插件可以使用。 vxe-table官网&#xff1a;https://vxetable.cn/v3/#/table/api 解决步骤1&#xff1a;安装vxe-table——npm inst…

HTTP状态码介绍,带你了解请求响应全过程

1xx状态码&#xff1a;&#x1f449;表示信息响应&#xff0c;客户端请求已被接收&#xff0c;继续处理。 100 - Continue&#xff1a;客户端应继续其请求。&#x1f914; 101 -Switching Protocols&#xff1a;服务器已经理解并接受了客户端的请求&#xff0c;将切换协议。 10…

【自用14】C++俄罗斯方块-思路复盘

1.编写主函数 int main(void){welcome();//欢迎函数system("pause");//窗口停留colsegraph();//关闭图画return 0;//返回值 }其中包含有最开始的欢迎&#xff0c;以及基础的窗口停留、图画关闭和返回值语句 2.编写欢迎函数 需求&#xff1a; 欢迎函数中需要包含的…

Java如何读取resources目录下的文件路径(九种代码示例教程)

本文摘要&#xff1a;Java如何读取resources目录下的文件路径 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。公粽号&#xff1a;洲与AI。 &#x1f91…

教育行业解决方案:智能PPT在教育行业的创新应用

在信息化时代&#xff0c;教育行业面临着巨大的变革。随着人工智能技术的不断发展&#xff0c;传统教学方式正在被重新定义。彩漩科技作为 AI 技术的先行者&#xff0c;推出了歌者 PPT &彩漩 PPT&#xff0c;为教师、学生和家长提供了一种全新的教育体验&#xff0c;实现了…

Quartz.Net_持久化

简述 通常而言&#xff0c;Quartz.Net的数据默认是存储在运存中的&#xff0c;换言之&#xff1a;断电即失。所以在默认情况下&#xff0c;当系统重启后&#xff0c;原先的所有任务、触发器、调度器都会失效 为避免上述情况的发生&#xff0c;可以对Quartz.Net进行持久化设置…

第二十一届华为杯数学建模经验分享之资料分享篇

今天给大家分享一些数学建模的资料&#xff0c;通过这些资料的学习相信你们一定在比赛中获得好的成绩。今天分享的资料包括美赛和国赛的优秀论文集、研赛的优秀论文集、推荐数学建模的相关书籍、智能算法的学习PPT、python机器学习的书籍和数学建模经验分享与总结&#xff0c;其…

[Hive]五、Hive 源码编译

G:\Bigdata\2.hive\大数据技术之Hive源码编译 Hadoop3.3.1 Hive3.1.3 Spark3.3.1 Hive on spark / spark on hive 均验证通过。 第1章 部署Hadoop和Hive 1.1 版本测试 Hadoop3.3.6 和Hive3.1.3 运行hive客户端时报错: java.lang.NoSuchMethodError:com.google.common.ba…

蓝桥杯:整数删除

// 蓝桥杯整数删除.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include<stdio.h> #define MAX 100 void findmin(int a[],int n,int& pos) {int mina[0];pos0;//pos0我开始忘了&#xff0c;特别注意边界for(int …

怎么才能快速提升网站在谷歌的收录?

​想让你的网站在谷歌快速收录&#xff0c;其实正常的方法都需要时间&#xff0c;无论是定期更新&#xff0c;提交网站地图&#xff0c;搞外链建设啥的&#xff0c;这些方法虽然有效&#xff0c;但见效慢。而且谷歌爬虫不会一下子抓取你所有页面&#xff0c;需要时间。如果真想…

停车找位难怎么办?捷顺智慧车位引导系统方案,让找车停车变得简单快捷!

随着城市化的快速发展&#xff0c;城市交通压力日益增大&#xff0c;尤其是在商业区、办公区和居民区&#xff0c;停车位的供需矛盾愈发突出。在这种背景下&#xff0c;车位引导系统&#xff08;PGS&#xff09;的重要性日益凸显。它不仅能够提高停车效率&#xff0c;减少车辆在…

用了这个编程助手,“数学建模”真的太简单了~

目录 一、ChatGPT在数学建模中的价值1、学习和指导2、模型评估和改进3、算法设计和优化4、解释和文档生成 二、作为编程手如何正确使用ChatGPT1、阅读代码及优化代码2、执行脚本3、生成单测 三、编程手备战建模大赛的一些建议1、明确&#xff1a;如何去问一个问题2、程序设计能…

[译] APT分析报告:12.APT29利用spy软件供应商创建的IOS、Chrome漏洞

这是作者新开的一个专栏&#xff0c;主要翻译国外知名安全厂商的技术报告和安全技术&#xff0c;了解它们的前沿技术&#xff0c;学习它们威胁溯源和恶意代码分析的方法&#xff0c;希望对您有所帮助。当然&#xff0c;由于作者英语有限&#xff0c;会借助LLM进行校验和润色&am…

STM32F100xx 系统架构

STM32F100xx 系统架构 参考手册下载关键词: STM32F100xx advanced Arm-based 32-bit MCUs - Reference manual 总结 注意: 这个架构是High-density value line devices的图。 ICode bus 把M3内核指令总线连接到闪存指令接口。Bus matrix 由4主4从构成。 总线矩阵管理内核系…