使用python的parser.add_argument()在卷积神经网络中如何预定义参数?

news2024/11/16 16:34:02

在训练卷积神经网络时,需要预定义很多参数,例如 b a t c h s i z e batch_size batchsize, b a c k b o n e , d a t a s e t , d a t a s e t r o o t backbone,dataset,dataset_root backbone,dataset,datasetroot等等,这些参数多而且特别零散,如果我们最初不把这些参数定义,到时候修改是一件特别麻烦的事情,需要逐个修改,所以这个时候用到了python的add_argument()很好的规避了这些问题

argparse模块

argparser: 命令行选项,参数和子命令行解析器。

本文主要以训练神经网络的角度,对 a r g p a r s e argparse argparse的使用进行讲解。
首先给出代码示例,在对其进行分析,在将其应用在训练卷积神经网络中:

import argparse
 
parser = argparse.ArgumentParser(description='CV Train')
parser.add_argument('--epochs', type=int, default=10, help='Number of epochs to train.')
 
args = parser.parse_args()
print(args.epochs)

运行结果

在这里插入图片描述

分析

  • 首先创建解析器 A r g u m e n t P a r s e r ( ) ArgumentParser() ArgumentParser()对象。
  • A r g u m e n t P a r s e r ( ) ArgumentParser() ArgumentParser()对像包含将命令行解析成 P y t h o n Python Python数据类型所需的全部信息。
parser = argparse.ArgumentParser(description='CV Train')
  • 其次,添加参数调用 a d d a r g u m e n t ( ) add_argument() addargument()方法添加参数。
  • 给一个 A r g u m e n t P a r s e r ( ) ArgumentParser() ArgumentParser()添加程序参数信息是通过 a d d a r g u m e n t ( ) add_argument() addargument()方法完成的,通常这些调用指定 A r g u m e n t P a r s e r ArgumentParser ArgumentParser如何获取命令行字符串并将其转换为对象,这些信息在 p a r s e a r g s ( ) parse_args() parseargs()调用时被存储和使用。
  • parser.add_argument('--epochs', type=int, default=10, help='Number of epochs to train.')
  • 然后调用 p a r s e a r g s ( ) parse_args() parseargs()将返回一个具有 e p o c h s epochs epochs属性的对象, e p o c h s epochs epochs属性将是一个包含一个或多个整数的列表。
  • 这个epochs属性的名字叫做epochs,类型为int,默认情况下其值为10,对其的解释为Number of epochs to train->训练的epoch数。
    • 最后,解析参数使用parse_args()解析添加参数

A r g u m e n t P a r s e r ArgumentParser ArgumentParser通过 p a r s e a r g s ( ) parse_args() parseargs()方法解析参数,其将检查命令行,把每个参数转换为适当类型,然后调用相应的操作,在脚本中,通常 p a r s e a r g s ( ) parse_args() parseargs()会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数

  • `args = parser.parse_args()
  • 将args.epoch打印出来
  • print(args.epochs) *

ArgumentParser对象的参数很多,其参数解释如下:仅作了解,了解description即可。

  • Desrciption: 帮助信息之前的描述信息.
 prog - The name of the program (default: os.path.basename(sys.argv[0]))
    usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
    description - 在参数帮助文档之前显示的文本(默认值:无)
    epilog - 在参数帮助文档之后显示的文本(默认值:无)
    parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
    formatter_class - 用于自定义帮助文档输出格式的类
    prefix_chars - 可选参数的前缀字符集合(默认值: '-')
    fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值: None)
    argument_default - 参数的全局默认值(默认值: None)
    conflict_handler - 解决冲突选项的策略(通常是不必要的)
    add_help - 为解析器添加一个 -h/--help 选项(默认值: True)
    allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
    exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True)

add_argument()方法定义如何解析命令行参数

  • ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

其参数解释如下

name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
action - 当参数在命令行中出现时使用的动作基本类型,其默认值是store。
nargs - 命令行参数应当消耗的数目。
const - 被一些 action 和 nargs 选择所需求的常数。
default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。[不指定参数时的默认值]
type - 命令行参数应当被转换成的类型。
choices - 可用的参数的容器。
required - 此命令行选项是否可省略 (仅选项可用)。
help - 一个此选项作用的简单描述。
metavar - 在使用方法消息中使用的参数值示例。
dest - 被添加到 parse_args() 所返回对象上的属性名。

parser.add_argument(argparse)应用在训练卷积神经网络中,

import argparse
 
def parse_args():
    parser = argparse.ArgumentParser(description='PyTorch Detection Training')
    parser.add_mutually_exclusive_group()
    parser.add_argument('--dataset',
                        type=str,
                        default='ImageNet',
                        choices=['ImageNet', 'CIFAR'],
                        help='ImageNet, CIFAR')
    parser.add_argument('--dataset_root',
                        type=str,
                        default=ImageNet_ROOT,
                        help='Dataset root directory path')
    parser.add_argument('--basenet',
                        type=str,
                        default='VGG',
                        help='Pretrained base model')
    parser.add_argument('--batch_size',
                        type=int,
                        default=64,
                        help='Batch size for training')
    parser.add_argument('--resume',
                        type=str,
                        default=None,
                        help='Checkpoint state_dict file to resume training from')
    parser.add_argument('--cuda',
                        type=str,
                        default=True,
                        help='Use CUDA to train model')
    parser.add_argument('--momentum',
                        type=float,
                        default=0.9,
                        help='Momentum value for SGD optim')
    parser.add_argument('--gamma',
                        type=float,
                        default=0.1,
                        help='Gamma update for SGD')
    parser.add_argument('--save_folder',
                        type=str,
                        default=config.checkpoint_path,
                        help='Directory for saving checkpoint models')
    parser.add_argument('--log_folder',
                        type=str,
                        default=config.log,
                        help='Log Folder')
    parser.add_argument('--lr',
                        type=float,
                        default=1e-2,
                        help='learning rate')
    parser.add_argument('--epochs',
                        type=int,
                        default=100,
                        help='Number of epochs')
    parser.add_argument('--num_classes',
                        type=int,
                        default=1000,
                        help='the number classes, like ImageNet:1000, cifar:10')
    parser.add_argument('--image_size',
                        type=int,
                        default=224,
                        help='image size, like ImageNet:224, cifar:32')
    parser.add_argument('--pretrained',
                        type=str,
                        default=False,
                        help='Models was pretrained')
 
    return parser.parse_args()
 
 
args = parse_args()
dataset数据集: ImageNet
dataset_root数据集的路径: ImageNet_ROOT = 'data/public/ImageNet'
basenet即backbone: VGG
batch_size: 64
resume接着上次训练的文件继续训练:None 或者 'XX.pth'
cuda cuda是否使用:True
momentum 使用SGD学习的动量: 0.9(初始值)
gamma 使用SGD更新的gamma: 0.1
save_folder 训练好之后保存的.pth文件
log_folder 日志文件
lr 学习率
epochs 训练使用的epochs
num_classes 使用数据集的类别总数
image_size 图像大小的尺寸
pretrained 是否使用预训练

总结

就这样,会自己在打印中,慢慢的使用,慢慢的了解与将其搞定,都行啦的里由与打算。慢慢的将其搞定都行啦的理由与打算。

  • 将其全部研究透彻,研究彻底,会在程序中使用 a r g p a r s e argparse argparse模块。

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

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

相关文章

我国制造行业 工业控制系统安全控制措施建设思考总结

声明 本文是学习GB-T 32919-2016 信息安全技术 工业控制系统安全控制应用指南. 下载地址 http://github5.com/view/585而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业控制系统安全控制概述 从概念上来说,工业控制系统的安全与其它领域…

【网络】网络发展,网络协议,网络传输流程,地址管理

目录 1.计算机网络背景 1.1网络发展 局域网和广域网 1.2 协议 2.网络协议初识 2.1协议分层 2.2OSI七层模型 2.3 TCP/IP 五层(或四层)模型 网络和操作系统之间的关系 2.4重谈协议 -- 计算机的视角,如何看待协议? 2.5 网…

python带你采集淘/苏/唯/考四大电商平台商品数据

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 环境介绍: python 3.8 越稳定越好 pycharm 2021专业版 一、苏宁 模块使用: selenium >>> pip install selenium 3.141.0 Python当中的模块 操作 浏览器的驱动 Chrome浏览器 Chromedr…

2023北京国际残疾人用品展览会|福祉博览会

全 称:2023中国国际福祉博览会暨中国国际康复博览会 英 文:Care & Rehabilitation Expo China 2023 时 间:2023年5月21-23日 地 点:北京首钢会展中心(1-3号馆) 主 办:中国残疾人联合会 承 办…

visdrone数据集转化为MOT数据集(用作MOTR模型训练)

文章目录visdrone数据集转化为MOT数据集MOT17 数据集格式traindet.txtgt.txtseqinfo.initestdet.txtvisdrone——Task 4_ Multi-Object Tracking配置seqinfo.ini文件代码如下Linuxvisdrone数据集转化为MOT数据集 MOT17 数据集格式 ├── MOT17 │ ├── images │ ├─…

YOLO学习记录之模型修改

我们在做实验时,不免需要对模型结构进行修改来检测自己的改进性能,对于一般模型而言,我们只需要简单的在代码中添加网络层即可,但对于一些预训练好的模型,我们则需要进行较为复杂的修改。以我们的YOLOV7模型为例&#…

[Linux]----守护进程

文章目录前言一、什么是守护进程?二、会话和进程组会话进程组三、守护进程的编程流程总结前言 这节课我来给大家讲解在Linux下如何让进程守护化,运行在后台,处理我们的任务. 正文开始! 一、什么是守护进程? 守护进程也称为精灵进程(Daemon),是运行在后台的一种特殊进程.它…

Mybatis-Plus快速使用相关知识点1

Mybatis-Plus的mapper、service 基本CURD BaseMapper BaseMapper是MyBatis-Plus提供的模板mapper,其中包含了基本的CRUD方法,泛型为操作的实体类型,Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能…

JavaScript刷LeetCode拿offer-链表篇

一、链表 链表(Linked List)是一种常见的基础数据结构,也是线性表的一种。 一个线性表是 n 个具有相同特性的数据元素的有限序列,线性表的存储结构分为两类:顺序表(数组)和链表。 链表相比较顺…

站得高,望得远

1、站得高,望的远 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。 这句话几乎概括了计算机系统软件体系结构的设计要点 ,整个体系结构从上到下都是按照严格的层次结构设计的。不仅是计算机系统软件整个体系是这样的,体系里…

884. 两句话中的不常见单词 map与stringstream

目录 力扣884. 两句话中的不常见单词 【解法一】:最后写出了一坨屎,虽然它是一坨屎,但是它能动,虽然它是一坨屎,但起码这是我自己拉的 【大佬解法】 stringstream的使用 以及 map的使用 884. 两句话中的不常见单词 句…

python实现bib文件中参考文献的题目每个单词首字母大写

文章目录前言实现思路前言 由于毕业论文格式要求英文参考文献的题目的每个单词(除了介词)的首字母都要大写,如果一条条地自己修改费时费力,这里就想着简单地用python操作字符串的方式实现。 实现思路 观察bib参考文献格式&#x…

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核 2023/1/2 17:40 《RK3588_Android12_SDK_Developer_Guide_CN.pdf》 原厂的开发板rk3588-evb1-lp4-v10单独编译内核的方式: cd kernel-5.10 export PATH../prebuilts/clang/host/linux-x86/clang-r4161…

【数据结构】C语言实现链表(单链表部分)

目录 前言 链表 链表的分类 1.单向或者双向 2.带头或者不带头 3.循环或者非循环 单链表实现 定义节点 接口函数实现 创建节点 打印链表 尾插节点 尾删节点 头插节点 头删节点 单链表查找 删除指定位置后的节点 指定位置后插入节点 删除指定位置 指定位置插入节点…

Linux-7 文本编辑vivim

Linux-7 文本编辑vi/vim vim介绍 什么是vim? vi和vim是Linux下的一个文本编辑工具。(可以李姐为Windows的记事本或word文档) 为什么要使用vim? 因为Linux系统一切皆为文件,而我们工作最多的就是修改某个服务的配置&a…

一名七年老安卓的 2022 总结

大家好,我是 shixin。一转眼到了 2022 的最后一天,今年发生了很多事,这篇文章来总结一下。长短期目标达成情况和去年一样,我的长期目标是成为具备创业能力的人,包括商业思维和全栈技术能力。总的来说,今年是…

STM32MP157驱动开发——USB设备驱动

STM32MP157驱动开发——USB设备驱动一、简介1.电气属性2.USB OTG3.STM32MP1 USB 接口简介4.Type-C 电气属性二、USB HOST 驱动开发1.USB HOST 驱动编写2.配置 PHY 控制器3.配置usbh_ehci三、USB HOST 测试1.鼠标键盘驱动使能2.U盘驱动四、USB OTG驱动开发1.USB OTG 控制器节点信…

系统设计实战一

文章目录前言一、服务幂等1.防止订单重复下单1.1 场景如下:当用户在提交订单的时候1.2 重复下单解决方案1.3案例一幂等性总结2 防止订单ABA问题2.1 场景如下:当在修改订单用户信息的时候发生服务器或者网络问题导致的重试2.2 ABA问题解决方案2.3 业务ABA…

Mac本地安装Mysql并配置

文章目录一、安装Mysql二、配置Mysql三、启动mysql四、SQL语法初步了解1.创建数据库2.建表3.查看表一、安装Mysql 笔者推荐采用安装包的方法安装Mysql,比较简单,适合新手。 首先在网上搜安装包: baidu按关键字搜即可:mysql mac安…

多兴趣向量重构用户向量

Re4: Learning to Re-contrast, Re-attend, Re-construct for Multi-interest Recommendation 论文地址:https://arxiv.org/pdf/2208.08011.pdf 一般的多兴趣建模过程是对用户序列进行编码,抽取出用户的多个兴趣向量,然后利用这些用户兴趣向…