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

news2024/9/27 7:26:46

在深度学习方法中我们不可避免地会遇到大量超参数如(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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设备管理中的数据结构

一、有哪些数据结构属于设备管理数据结构 1. 设备控制表(DCT) “Device Control Table”的首字母缩写 2. 控制器控制表(COCT) “Controller Of Control Table”的首字母缩写。 3. 通道控制表(CHCT) “…

简单实现一个本地ChatGPT web服务(langchain框架)

简单实现一个本地ChatGPT 服务,用到langchain框架,fastapi,并且本地安装了ollama。 依赖安装: pip install langchain pip install langchain_community pip install langchain-cli # langchain v0.2 2024年5月最新版本 pip install bs4 pi…

基于swagger插件的方式推送接口文档至torna

目录 一、前言二、登录torna三、创建/选择空间四、创建/选择项目五、创建/选择应用六、获取应用的token七、服务推送7.1 引入maven依赖7.2 test下面按照如下方式新建文件 一、前言 Torna作为一款企业级文档管理系统,支持了很多种接口文档的推送方式。官方比较推荐的…

基于EMQX+Flask+InfluxDB+Grafana打造多协议物联网云平台:MQTT/HTTP设备接入与数据可视化流程(附代码示例)

摘要: 本文深入浅出地介绍了物联网、云平台、MQTT、HTTP、数据可视化等核心概念,并结合 EMQX、Flask、InfluxDB、Grafana 等主流工具,手把手教你搭建一个支持多协议的物联网云平台。文章结构清晰,图文并茂,代码翔实易懂&#xff0…

Linux 入门教程 by 程序员鱼皮

本文作者:程序员鱼皮 免费编程学习 - 编程导航网:https://www.code-nav.cn 大家好,我是鱼皮。 前两天我学编程的老弟小阿巴过生日,我问他想要什么礼物。 本来以为他会要什么游戏机、Q 币卡、鼠标键盘啥的,结果小阿巴…

网关、DHCP协议、ip地址、子网掩码简单介绍

参考文章:https://baike.baidu.com/item/%E7%BD%91%E5%85%B3/98992?frge_ala https://baike.baidu.com/item/DHCP%E6%9C%8D%E5%8A%A1%E5%99%A8/9956953?fromModulelemma_inlink https://blog.csdn.net/weixin_58783105/article/details/135041342 https://blog.cs…

Spring系列三:基于注解配置bean 下

基于注解配置bean 💗自动装配🍝案例1: Autowired引出🍝案例2: Autowired解读🍚案例3: Resource解读🍝小结 💗泛型依赖注入🍝基本说明🍝应用实例 💗自动装配 ●基本说明 …

数据中心巡检机器人助力,河南某数据中心机房智能化辅助项目交付

随着数据中心规模的不断扩大和业务需求的不断增长,确保其高效、安全、稳定地运行变得愈发重要。传统的人力巡检方式存在效率低、误差高、成本大等问题,难以满足现代数据中心的需求。为解决这些挑战,智能巡检机器人应运而生,成为数…

应用最优化方法及MATLAB实现——第3章代码实现

一、概述 在阅读最优方法及MATLAB实现后,想着将书中提供的代码自己手敲一遍,来提高自己对书中内容理解程度,巩固一下。 这部分内容主要针对第3章的内容,将其所有代码实现均手敲一遍,中间部分代码自己根据其公式有些许的…

Windows系统MySQL的安装,客户端工具Navicat的安装

下载mysql安装包,可以去官网下载:www.mysql.com。点击downloads 什么?后面还有福利? 下载MySQL 下载企业版: 下载Windows版 5点多的版本有点低,下载8.0.38版本的。Window系统。下载下面的企业版。不下载…

网安防御保护-小实验

1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 3、办公区设备10.0.2.10不允许访问DMZ区的FTP服务器和HTTP服务器,仅能ping通…

Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析

Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析 文章目录 Android Settings应用 PreferenceScreen 条目隐藏实现和简单分析一、前言二、隐藏实现1、xml 文件中隐藏PreferenceScreen 的某个条目2、普通Preference条目的隐藏的Java代码实现3、SwitchPreference条…

bevfomer self-att to transformer to tensorrt

self-attentation https://blog.csdn.net/weixin_42110638/article/details/134016569 query input* Wq key input* Wk value input* Wv output 求和 query . key * value detr multiScaleDeformableAttn Deformable Attention Module,在图像特征上&#…

STM32读取LX-224总线舵机信息

一、舵机指令包格式 帧头: 连续收到两个 0x55 ,表示有数据包到达。ID: 每个舵机都有一个 ID 号。ID 号范围 0~253,转换为十六进制 0x00~0xFD。广播 ID: ID 号 254(0xFE) 为广播 ID,若控制器发出的 ID 号为 254(0xFE),所有的舵机均…

DockerFile文件解析

DockerFile 要研究自己如何做一个镜像,而且微服务项目打包上云部署,Docker就是最方便的。 微服务打包成镜像,任何装了Docker的地方,都可以下载使用,极其的方便。 流程:开发应用>DockerFile>打包为…

c++ 建造者模式

文章目录 建造者模式为什么使用建造者模式建造者模式实现步骤实现示例建造者模式优缺点 建造者模式 建造者模式(Builder Pattern)是面向对象设计模式中的一种,主要用于创建复杂对象。这种模式将对象的构建过程与其表示分离,允许用…

Qt+ESP32+SQLite 智能大棚

环境简介 硬件环境 ESP32、光照传感器、温湿度传感器、继电器、蜂鸣器 基本工作流程 上位机先运行,下位机启动后尝试连接上位机连接成功后定时上报传感器数据到上位机,上位机将信息进行处理展示判断下位机传感器数据,如果超过设置的阈值&a…

电商出海第一步,云手机或成重要因素

电商出海第一步并非易事,挑战和机遇并存,出海企业或个人或将借助云手机从而达成商业部署全球化的目的; 下面我们从网络稳定、数据安全、成本、以及多平台适配方面来看,究竟为什么说云手机会成为出海的重要因素; 首先…

图谱动态240709

本期将分享近期全球知识图谱相关 行业动态、会议资讯、论文推荐 —--| 行业动态 |--— 微软开源GraphRAG 7月2日,微软开源了GraphRAG,一种基于图的检索增强生成(RAG) 方法,可以对私有或以前未见过的数据集进行问答(开源地址&…

ENSP防火墙

实验拓扑图 需求: ENSP的配置: 防火墙: 交换机: 华为防火墙的配置: 接口配置: 安全区域: 安全策略: 办公区访问DMZ: 生产区访问DMZ: 游客区只能访问门户网…