当前位置: 首页 > news >正文

PyTorch Lightning教程四:超参数的使用

如果需要和命令行接口进行交互,可以使用Python中的argparse包,快捷方便,对于Lightning而言,可以利用它,在命令行窗口中,直接配置超参数等操作,但也可以使用LightningCLI的方法,更加轻便简单。

ArgumentParser

ArgumentParser是Python的内置特性,进而构建CLI程序,我们可以使用它在命令行中设置超参数和其他训练设置。

from argparse import ArgumentParserparser = ArgumentParser()
# 训练方式(GPU or CPU or 其他)
parser.add_argument("--devices", type=int, default=2)
# 超参数
parser.add_argument("--layer_1_dim", type=int, default=128)
# 解析用户输入和默认值 (returns argparse.Namespace)
args = parser.parse_args()# 在程序中使用解析后的参数
trainer = Trainer(devices=args.devices)
model = MyModel(layer_1_dim=args.layer_1_dim)

然后在命令行中如此调用

python trainer.py --layer_1_dim 64 --devices 1

Python的参数解析器在简单的用例中工作得很好,但在大型项目中维护它可能会变得很麻烦。例如,每次在模型中添加、更改或删除参数时,都必须添加、编辑或删除相应的add_argument。Lightning CLI提供了与Trainer和LightningModule的无缝集成,为您自动生成CLI参数。

LightningCLI

pip install "jsonargparse[signatures]"

执行起来很简单,例如

# main.py
from lightning.pytorch.cli import LightningCLI
from lightning.pytorch.demos.boring_classes import DemoModel, BoringDataModuledef cli_main():# 只需要写这一行即可,两个参数,对应模型和数据cli = LightningCLI(DemoModel, BoringDataModule)	# 注意: 别写.fitif __name__ == "__main__":cli_main()  # 在函数中实现CLI并在主if块中调用它是一种很好的做法

然后在命令行中执行help,进行文档查询

python main.py --help

执行结果

usage: main.py [-h] [-c CONFIG] [--print_config[=flags]]{fit,validate,test,predict,tune} ...pytorch-lightning trainer command line tooloptional arguments:-h, --help            Show this help message and exit.-c CONFIG, --config CONFIGPath to a configuration file in json or yaml format.--print_config[=flags]Print the configuration after applying all otherarguments and exit. The optional flags customizes theoutput and are one or more keywords separated bycomma. The supported flags are: comments,skip_default, skip_null.subcommands:For more details of each subcommand, add it as an argument followed by--help.{fit,validate,test,predict,tune}fit                 Runs the full optimization routine.validate            Perform one evaluation epoch over the validation set.test                Perform one evaluation epoch over the test set.predict             Run inference on your data.tune                Runs routines to tune hyperparameters before training.

因此可以使用如下方法:

$ python main.py fit		# 训练
$ python main.py validate	# 验证
$ python main.py test		# 测试
$ python main.py predict	# 预测

例如训练过程,可以通过以下方法具体调参数

# learning_rate
python main.py fit --model.learning_rate 0.1# output dimensions
python main.py fit --model.out_dim 10 --model.learning_rate 0.1# trainer 和 data arguments
python main.py fit --model.out_dim 2 --model.learning_rate 0.1 --data.data_dir '~/' --trainer.logger False

相关文章:

PyTorch Lightning教程四:超参数的使用

如果需要和命令行接口进行交互,可以使用Python中的argparse包,快捷方便,对于Lightning而言,可以利用它,在命令行窗口中,直接配置超参数等操作,但也可以使用LightningCLI的方法,更加轻…...

2023 蓝桥杯真题B组 C/C++

https://www.dotcpp.com/oj/train/1089/ 题目 3150: 蓝桥杯2023年第十四届省赛真题-冶炼金属 题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金 属 O…...

视频怎样分割成两段?分享几种视频分割方法

当需要制作长时间的视频时,将视频分割成几段可以帮助你更好地组织视频内容,使其更易于理解和学习。与此同时,将视频分割成多个小部分也可以在不影响整体视频质量的情况下将其上传到各种平台,并节省存储空间。此外,如果…...

cyber_back

1.1 话题通信 模式: 以发布订阅的方式实现不同节点之间数据交互的通信模式。 如图1-1所示,Listener-Talker通信首先创建了两个Node,分别是Talker Node和 Listener Node。 每个Node实例化Writer类和Reader类对Channel进行消息的读写。 Writer…...

价值 1k 嵌入式面试题-单片机 main 函数之前都做了啥?

开门见山 请说下单片机(Arm)在运行到 main() 函数前,都做了哪些工作? 常见问题 系统初始化工作,太泛泛硬件初始化,比较不具体 答题思路 这道题应该从两方面回答,一个是比较表面的硬件的初始化…...

美团2024校招6000人;伯克利博士讲Llama 2技术细节;互联网转行AIGC最全指北;技术进步周期与创客崛起 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 美团 2024 届校园招聘将录用 6000 人,技术类岗位扩招超 50% 美团招聘公众号宣布启动 2024 届校园招聘!此次招聘…...

【严重】PowerJob<=4.3.3 远程代码执行漏洞

漏洞描述 PowerJob 是一款开源的分布式任务调度框架。 由于 PowerJob 未对网关进行鉴权&#xff0c;4.3.3 及之前版本中&#xff0c;未经授权的攻击者可向 /instance/detail 端点发送恶意构造的 instanceId 参数远程执行任意代码。 漏洞名称 PowerJob<4.3.3 远程代码执行漏…...

什么是 ASP.NET Core SignalR?

所有连接了 Internet 的应用程序都由服务器和客户端组成。 客户端依赖于服务器获取数据&#xff0c;而它们获取数据的主要机制是通过发出超文本传输协议 (HTTP) 请求来进行的。 某些客户端应用程序需要经常更改的数据。 ASP.NET Core SignalR 提供了一个 API&#xff0c;用于创…...

Centos/Ubuntu 替换yum/apt源?

yum/apt源如果不满足要求, 可以考虑将源替换为阿里云的源。 1.CentOS更换阿里云yum源 1. 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base-bak.repo 2. 下载 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cent…...

【RabbitMQ(day3)】扇形交换机和主题交换机的应用

文章目录 第三种模型&#xff08;Publish/Subscribe 发布/订阅&#xff09;扇型&#xff08;funout&#xff09;交换机Public/Subscribe 模型绑定 第四、第五种模型&#xff08;Routing、Topics&#xff09;第四种模型&#xff08;Routing&#xff09;主题交换机&#xff08;To…...

redis 高级篇 redis 源码的读取分析

一 redis源码分析 1.1 源码分析 1每一个kv键值对应有一个dictEntry。 2.底层数据结构...

Acwing.873.欧拉函数

题目 给定n个正整数ai&#xff0c;请你求出每个数的欧拉函数。 输入格式 第一行包含整数n。 接下来n行&#xff0c;每行包含一个正整数ai。 输出格式 输出共n行&#xff0c;每行输出一个正整数an的欧拉函数。 数据范围 1 ≤n ≤100 1≤ai≤2* 109 输入样例: 3 3 6 8输…...

深入浅出FPGA——笔记7 代码风格

1 寄存器电路的设计方式 废话&#xff1a;时序逻辑设计是核心&#xff0c;而寄存器又是时序逻辑的基础。 1: 简单的时序输入输出模型 如下图所示&#xff0c;在每个时钟信号clk的有效沿&#xff08;通常是上升沿&#xff09;&#xff0c;输入端数据din将被锁存到输出端dout。…...

npm, yarn配置

一、npm 1. 查看当前的镜像源。 npm config get registry 2. 设置为淘宝源 npm config set registry https://registry.npm.taobao.org 3. 还原默认源 npm config set registry https://registry.npmjs.org/ 二、Yarn 1.yarn的安装 npm install -g yarn 2. 查看当…...

跨域情况下,vue如何下载后台接口提供的application/octet-stream文件流Excel文件

前言 由于跨域&#xff0c;所以无法直接通过window.location.href或者a标签直接下载&#xff0c;直接拼后台接口地址又暴露了后台地址&#xff0c;不可行。 所以在这种跨域情况下&#xff0c;本章讲一下vue如何下载后台接口提供的application/octet-stream文件流Excel文件。 …...

学C的第三十一天【通讯录的实现】

相关代码gitee自取&#xff1a;C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第三十天【自定义类型&#xff1a;结构体、枚举、联合】_高高的胖子的博客-CSDN博客 通讯录需求&#xff1a; 实现一个通讯录&#xff0c; 通讯录中存放保存人的信息&#xff1…...

Linux操作系统学习,Linux基础命令大全

目录 第一章、Linux简介和安装1.1&#xff09;Linux简介和分类1.2&#xff09;安装VMware虚拟机&#xff0c;在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1&#xff09;什么是IP地址&#xff0c;如何查看2.2&#xff09;虚拟机NAT模式中Linux的IP地址设置有…...

【软件测试】说说你对TDD测试驱动开发的理解?

很多公司在面测试中高级岗时&#xff0c;都会不同程度地问到“有没有了解过TDD”“你认为TDD可以解决什么问题”或者“说说测试驱动开发的流程”等等&#xff0c;即使公司并不会用到此开发流程&#xff0c;面试官也会通过你对这个相对还比较“陌生”的概念的讲述来了解你对一些…...

B. Binary Cafe(二进制的妙用)

题目&#xff1a;Problem - B - Codeforces 总结&#xff1a; 对于该题最简单的方法为使用二进制的数表示状态 例如&#xff1a; 对于一个数7的二进制&#xff1a;111 它的每一位都可表示两种状态我们可以理解为取或者不取 对于7这个数字它可以表示一种状态即在三个位置都…...

SpringBoot单元测试

目录 1.什么是单元测试? 2.单元测试有哪些好处? 3.Spring Boot单元测试使⽤ 单元测试的实现步骤 1. ⽣成单元测试类 2. 添加单元测试代码 2.1 .添加Spring Boot框架测试注解:SpringBootTest 2.2 添加单元测试业务逻辑 简单的断⾔说明 1.什么是单元测试? 单元测试(un…...

刷题 41-45

四十一、移除元素 示例 1&#xff1a; 输入&#xff1a;nums [3,2,2,3], val 3 输出&#xff1a;2, nums [2,2] 解释&#xff1a;函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如&#xff0c;函数返回的新长度为 2 …...

Centos时间同步

前言 在 Linux 操作系统中&#xff0c;正确的时间同步是非常重要的&#xff0c;因为它对于很多应用程序都是必需的。本文将介绍两种在 Centos 系统中同步当前时间的方式。 方法一&#xff1a;使用 ntpdate 命令同步当前时间 ntpdate 命令是一种简单快捷的同步当前时间的方式&a…...

Linux 查看磁盘空间

1 查看当前目录的总大小 &#xff1a;du -sh ps&#xff1a;du(disk usage) 2 查看某个目录的总大小&#xff1a;du -sh 目录名 3 查找出/目录下占用空间最大的前10个文件或者文件夹&#xff1a;sudo du -a / | sort -n -r | head -n 10 4 查看磁盘信息:df -h...

我的会议(我的审批,会议签字附源码)

目录 前言&#xff1a; 3.我的审批&#xff1a; 3.1实现的特色功能&#xff1a; 3.2显示的效果 3.3思路&#xff1a; 3.4寻找相关的案例或者自己使用JavaScript去写一个类似的功能 3.5具体的步骤&#xff1a; 3.5.1添加静态的jsp代码&#xff08;我的审批数据的显示&…...

Python 装饰器该如何理解?

哈喽大家好&#xff0c;今天带大家了解下在Python中装饰器的使用 定义 首先我们先来了解下装饰器的定义。顾名思义&#xff0c;在Python中&#xff0c;装饰器本质上就是一个函数&#xff0c;它可以接收一个函数作为参数&#xff0c;然后返回一个新的函数。这个新的函数可以在…...

IDEA 模块不加载依旧是灰色 没有变成小蓝色的方块

Settings > Build, Execution, Deployment > Build Tools > Maven > Ignored Files下降对应的模块勾选掉 但通常在Maven的配置中&#xff0c;您会找到一个名为“ignoredFiles”的列表&#xff0c;其中包含被忽略的文件和目录。您可以通过取消选中所需的文件或目录…...

可以写进简历的kafka优化-----吞吐量提升一倍的方法

冲突 在看到项目工程里kafka 生产端配置的batch.size为500&#xff0c;而实际业务数据平均有1K大小的时候&#xff1b;我有点懵了。是的&#xff0c;这里矛盾了&#xff1b;莫非之前的作者认为这个batch.size是发送的条数&#xff0c;而不是kafka生产端内存缓存记录的大小&…...

JavaScript中,for in 和for of的区别

for in 遍历的是数组的索引&#xff08;即键名&#xff09;&#xff0c;而 for of 遍历的是数组元素值&#xff08;即键值&#xff09;。for...in 循环出的是 key&#xff0c;for...of 循环出的是 value 推荐在循环对象属性的时候使用 for...in&#xff0c;在遍历数组的时候的时…...

计算机毕设 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…...

vue3 axios接口封装

在Vue 3中&#xff0c;可以通过封装axios来实现接口的统一管理和调用。封装后的接口调用更加简洁&#xff0c;代码可维护性也更好。以下是一个简单的Vue 3中axios接口封装的示例&#xff1a; 1.首先&#xff0c;安装axios和qs&#xff08;如果需要处理复杂数据&#xff09;&am…...