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

深度学习中的超参管理方法:argparse模块

在深度学习方法中我们不可避免地会遇到大量超参数如(batch_size、learning_rate等)。不同的超参数组合可以得到不同的训练/测试结果。所以在训练和测试过程中我们需要不断调整超参数获得理想的结果(炼丹),如果每一次去找分布在不同的函数里的超参数是一个及其麻烦的过程,为了管理大量的超参数提高炼丹效率,出现了许多超参数管理方法,我将自己遇到的朝参管理方法在此记录,方便自己回顾。

1. argparse模块管理超参

argparse 模块是 Python 中用于解析命令行参数的标准库工具。它允许你定义你的脚本应该接受哪些命令行参数,以及这些参数的类型和默认值。通过使用 argparse,你可以轻松地从命令行获取用户输入,并在脚本中使用这些输入。

argparse 帮助你创建一个用户友好的命令行界面,使得你的脚本能够更加灵活地与用户交互。例如,你可以定义脚本接受的选项,设置默认值,提供帮助信息,等等。

1.1 设置超参

假设我们有几个超参数:

我们创建脚本传入参数进行测试:

import argparse# 创建 ArgumentParser 实例
parser = argparse.ArgumentParser(description="用来介绍parser!!")# 添加命令行参数
#help用于在命令行中打印“--batch_size”的用法,可以提醒自己和其他使用此程序的人
parser.add_argument('--batch_size', type=int, default=64, help="定义batch")
parser.add_argument('--epoch', type=int, default=200, help="定义训练轮数")
parser.add_argument('--learning_rate', type=float, default=0.001, help="定义学习率")# 解析命令行参数
args = parser.parse_args()# 访问命令行参数的值
model_batch_size = args.batch_size
model_epoch = args.epoch
model_learning_rate = args.learning_rate# 输出batch_size参数的值
print(model_batch_size)
print(model_epoch)
print(model_learning_rate)

输出结果:

1.2 使用命令行管理传参

可以使用help方法查看参数说明:

使用命令行传入参数:

可以看出batch_size和epoch在手动更新参数之后打印修改后的值,learning_rate没有修改保持默认参数。

记录一个错误:文件名不可以与import中的包名一直,会导致python误判导入的包和文件报错:

AttributeError: module 'argparse' has no attribute 'ArgumentParser'

1.3 解析方法

parser.parse_args()
  • 解析命令行参数。如果存在未定义在 ArgumentParser 中的参数,会引发错误。
  • 只返回解析后的命名空间(包含所有已知参数的值)。
parser.parse_known_args()
  • 解析命令行参数,并返回一个命名空间和一个未知参数列表。如果存在未定义在 ArgumentParser 中的参数,这些参数会被存储在返回的未知参数列表中,而不会引发错误。
  • parse_known_args() 方法返回一个包含两个元素的元组,第一个元素是解析后的命名空间(包含已知参数的值),第二个元素是未知参数列表。
  • parse_known_args()[0] 只返回解析后的命名空间(已知参数的值),忽略未知参数列表。
import argparse# 创建 ArgumentParser 实例
parser = argparse.ArgumentParser("用来介绍parser!!")# 添加命令行参数
#help用于在命令行中打印“--batch_size”的用法,可以提醒自己和其他使用此程序的人
parser.add_argument('--batch_size', type=int, default=64, help="定义batch")
parser.add_argument('--epoch', type=int, default=200, help="定义训练轮数")
parser.add_argument('--learning_rate', type=float, default=0.001, help="定义学习率")# 解析命令行参数
args = parser.parse_args()
print(args)# 解析命令行参数2
args_known = parser.parse_known_args()
print(args_known)
print(args_known[0])
print(args_known[1])

输出:

参考:【Python】【深度学习】使用argparse模块和JSON管理深度学习模型的超参数_深度学习代码中用的argparse是什么意思,能不能不用-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Nodejs 第八十六章(部署pm2)
  • 如何在uniapp中使用websocket?
  • 如何选择一款适合自己的鼠标?
  • 在Mac上一键安装Mysql(解决所有安装问题)
  • 网络安全威胁也日益复杂,分布式拒绝服务(DDoS)攻击因其高频率和破坏力而成为一大挑战
  • Okhttp实现原理
  • linux kernel ptr dump
  • python 知识点累积
  • js逆向-webpack-python
  • YOLOv8损失函数改进-增加MPDIoU提升边界框回归精度【附代码】
  • 苹果入局,AI手机或将实现“真智能”?
  • Spring懒加载Bean机制
  • 昇思25天学习打卡营第19天 | 基于MindSpore通过GPT实现情感分类
  • PGCCC|【PostgreSQL】PCA认证考试大纲#postgresql认证
  • GitHub 站点打不开
  • [数据结构]链表的实现在PHP中
  • HomeBrew常规使用教程
  • Tornado学习笔记(1)
  • vue:响应原理
  • 测试如何在敏捷团队中工作?
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 机器学习中为什么要做归一化normalization
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 配置 PM2 实现代码自动发布
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 数组的操作
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 微信支付JSAPI,实测!终极方案
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​Redis 实现计数器和限速器的
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #if等命令的学习
  • #宝哥教你#查看jquery绑定的事件函数
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (2015)JS ES6 必知的十个 特性
  • (39)STM32——FLASH闪存
  • (Forward) Music Player: From UI Proposal to Code
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .htaccess配置重写url引擎
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core控制台应用程序初识
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中两种OCR方式对比
  • .ui文件相关
  • @SuppressWarnings(unchecked)代码的作用