深度学习中的超参管理方法: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博客

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

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

相关文章

破解世纪难题:颠覆性方案解锁世界十大未解之谜

前言 在科学的浩瀚宇宙中,始终存在一些引人入胜的谜题,它们挑战着人类智慧的极限。这些谜题不仅涵盖了数学、物理、天文学和生物学等领域,还触及到意识和宇宙的本质。破解这些世纪难题,不仅意味着人类知识的巨大飞跃,…

【Windows】硬链接和软链接(OneDrive同步指定目录?)

文章目录 一、场景带入二、Windows下的硬链接和软链接2.1 硬链接(Hard Link)2.2 软链接(符号链接,Symbolic Link)2.3 软链接和快捷方式2.4 应用场景 三、OneDrive中的应用3.1 错误姿势3.2 好像可行的尝试3.3 合理的解决…

智能猫砂盆两种类型怎么选?深度剖析热门前三的品牌!

应该也有很多铲屎官像我一样,第一个入手的通常都是封闭式的智能猫砂盆,自动清洁是很好用,但问题也随之而来。有时候滚筒式的智能猫砂盆会在清洁过程中将砂团摔碎,导致粪便暴露出来产生臭味,这样我们回来不得不又再次进…

LangChain —— Prompt Templates

文章目录 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates 一、什么是 Prompt Templates 提示模板有助于将用户输入和参数转换为语言模型的指令。这可用于指导模型的响应&#x…

LangChain框架详解

LangChain框架详解 LangChain是一个基于语言模型开发应用程序的强大框架,旨在帮助开发人员简化与大模型交互、数据检索以及将不同功能模块串联起来以完成复杂任务的过程。它提供了一套丰富的工具、组件和接口,使开发人员能够轻松构建上下文感知和具备逻…

基于stm32+小程序开发智能家居门禁系统-硬件-软件实现

视频演示: 基于stm32智能家居门禁系统小程序开发项目 视频还有添加删除卡号,添加删除指纹,关闭继电器电源等没有演示。 代码Git: https://github.com/Abear6666/stm32lock 总体功能: 本门禁系统主要解锁功能分别为卡…

冲积图(alluvial plot)展示竞争性内源RNA(ceRNA)网络

导读: 用冲积图展示ceRNA网络可以更好地查看竞争和吸附关系,让静态的图,“流动”起来。 冲积图简介 Alluvial plot(冲积图)是一种流程图,最初设计用于展示网络结构随时间的变化。这种图表特别适用于展示…

sed的替换可用:斜杠/,竖或|,井号# 等符号, 但是查找只能用斜杠/ , sed的查找和替换可以一起用 笔记240711

sed的替换可用:斜杠/,竖或|,井号# 等符号, 但是… … 查找只能用斜杠/ 替换必须用s开头, 如:s/ , s| , s# 例如: s/正则/替换内容/s/正则/替换内容/gs|正则|替换内容|s|正则|替换内容|gs#正则#替换内容#s#正则#替换内容#g 当内容包含斜杠/时, (例如路径) , 使用 竖或|,井号…

06_TypeScript 中的函数

TypeScript 中的函数 一、函数的定义es5 定义函数的方法TypeScript 定义函数的方法ts 中定义方法传参 二、可选参数三、默认参数(跟可选参数一样)四、剩余参数(三点运算符的应用)五、函数重载六、箭头函数 es6 一、函数的定义 es…

Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(edit) 控件样式 创建控件 初始控件 消息处理 示例代码 编辑框(edit) 控件样式 编辑框(Edit Control)是Windows中最常用的控件之一,用于接收用户…

python 知识点累积

.items() tinydict {Google: www.google.com, Runoob: www.runoob.com, taobao: www.taobao.com}print (tinydict.items())运行结果 dict_items([(Google, www.google.com), (Runoob, www.runoob.com), (taobao, www.taobao.com)]) 返回的 dict_items([...]) 是一个字典项的…

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件:sonarQube不能使用root账号进行启动,所以需要创建普通用户及 其用户组 1)创建组 2)添加用户、组名、密码 3)CMD上传qube文件-不能传到home路径下哦 4&#xff09…

王牌站士Ⅳ--矢量数据库对 RAG 效率的影响

前言 近年来,检索增强生成 (RAG) 模型越来越受欢迎。RAG 模型利用大型神经网络以及外部知识源的检索机制。这使得模型拥有的知识比其内部存储的更多,从而使其能够为广泛的主题和领域生成高质量的输出。 影响 RAG 模型性能的关键因素之一是从外部源检索相…

C++之STL简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、STL是什么二、STL的发展历史三、STL的组成部分3.1 容器(Containers)3.2 迭代器(Iterators)3.3 算法&#xf…

【启明智显分享】ESP32-S3 4.3寸触摸串口屏HMI应用方案:WIFI/蓝牙无线通信助力烘干设备实现远程遥控

技术不断进步,人们对烘干设备的美观度、功能多样性提出更高要求,传统的数码管显示、按键式控制已经无法满足客户的需求。用智能屏替代传统的数码管可以很好的解决这个问题,为用户带来更好的人机交互体验。 基于此,启明智显提出将乐…

solidity实战练习2--ERC20实现

//SPDX-License-Identifier:MTT pragma solidity ^0.8.24;interface erc20{function name()external view returns (string memory);//查看代币的名称function symbol() external view returns(string memory);//查看代币简称function totalSupply()external view returns(uint…

低代码:架起产教融合的“立交桥”

随着信息技术的飞速发展,传统的软件开发模式正面临着前所未有的挑战。为了应对这一挑战,低代码平台应运而生,其通过简化开发流程、提高开发效率,成为了推动产业与教育深度融合的重要力量。本文将探讨低代码平台如何架起产教融合的…

C++基础(十八):继承(重点)

各位看官,大家好!今天我们将探讨C中的三大特性之一:继承。继承是一种面向对象编程的重要概念,它允许我们通过创建新的类,从而复用和扩展现有类的功能。通过继承,我们不仅能够提高代码的可重用性和可维护性&…

算法刷题笔记 KMP字符串(C++实现,并给出了求next数组的独家简单理解方式)

文章目录 题目描述基本思路实现代码 题目描述 给定一个字符串S,以及一个模式串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串P在字符串S中多次作为子串出现。求出模式串P在字符串S中所有出现的位置的起始下标。 输入格式 第一行输入整数…

docker拉取镜像,报错error pulling image configuration: download failed after attempts=6: dial tcp 157.240.1

error pulling image configuration: download failed after attempts6: dial tcp 157.240.10.32:443: i/o timeout docker compose pull docker pull langgenius/dify-web:0.6.13 重启docker sudo systemctl restart dockerhttps://stackoverflow.com/questions/72353203/do…