parse_known_args()方法的用处就是有些时候,你的选项配置可能不会在一个函数或包中调用完成

在很多使用,我们可能会需要根据一些输入的选项,比如在深度学习中,我们可能会根据传入的模型设置--model来决定我们调用的是那个模型代码,然后在该模型中还会有一部分的选项设置

那么这时候就会出现一种情况就是运行命令中会传入所有需要设置的选项值,但是有时候仅获取到基本设置时可能要进行一些操作然后才继续导入剩下的参数设置

parse_known_args()方法的作用就是当仅获取到基本设置时,如果运行命令中传入了之后才会获取到的其他配置,不会报错;而是将多出来的部分保存起来,留到后面使用

举例说明:

import argparse
def basic_options():
parser = argparse.ArgumentParser()
parser.add_argument('--data_mode', type=str, default= 'unaligned', help='chooses how datasets are loaded')
parser.add_argument('--mode', type=str, default='test', help='test mode')
return parser def data_options(parser):
parser.add_argument('--lr', type=str, default='0.0001', help='learning rate')
return parser if __name__ == '__main__':
parser = basic_options()
opt, unparsed = parser.parse_known_args()
print(opt)
print(unparsed)
parser = data_options(parser)
opt = parser.parse_args()
print(opt)

运行:

(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002']
Namespace(data_mode='aligned', lr='0.0002', mode='test')

该例子说明了在一开始仅导入了basic_options()选项时,多余出来的--lr选项会被保存起来,不会报错,直到接下来导入了data_options(parser)之后再将其赋值

这时候如果我们传入一个没有配置的选项,它在中间的时候也会保存起来,但是最后就会报错:

(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002 --no_clue True
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002', '--no_clue', 'True']
usage: test_data.py [-h] [--data_mode DATA_MODE] [--mode MODE] [--lr LR]
test_data.py: error: unrecognized arguments: --no_clue True

其他:如果想要以字符串形式获取选项值,在最后添加一行:

print('{data_mode}_{mode}_{lr}'.format(**vars(opt)))

返回:

(deeplearning) userdeMacBook-Pro:pytorch-CycleGAN user$ python test_data.py --data_mode aligned --lr 0.0002
Namespace(data_mode='aligned', mode='test')
['--lr', '0.0002']
Namespace(data_mode='aligned', lr='0.0002', mode='test')
aligned_test_0.

python的argparse模块parse_known_args()方法的使用的更多相关文章

  1. Python的argparse模块的使用

    Python的argparse模块的使用 最近看到一份Pytorch代码有以下内容: # Training settings parser = argparse.ArgumentParser(desc ...

  2. python中argparse模块简单使用

    python中argparse模块简单使用 简介 argparse是python用于解析命令行参数和选项的标准模块.argparse模块的作用是用于解析命令行参数. 使用步骤 1.首先导入该模块 2. ...

  3. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  4. python有三种导入模块的方法(转)

    原文:http://www.cnblogs.com/allenblogs/archive/2011/11/15/2055149.html python有三种导入模块的方法 其一, import mod ...

  5. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  6. 【python】argparse模块

    来源:http://www.2cto.com/kf/201412/363654.html argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.ar ...

  7. Python的Argparse模块是什么?(未完)

            近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...

  8. python的argparse模块

    一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,例如python parseTes ...

  9. Python的Argparse模块是什么?

            近日在阅读代码的过程中遇到了Argparse模块,记得前段时间已经看了,可是过了两周现在又忘了, 看来写代码一定要钻研到底搞清楚其中原委才行,本文主要参考Python3.6系列官方文档 ...

随机推荐

  1. 使用navicat创建数据库

    1.  打开navicat 2.  选中数据库连接“root”右键->新建数据库 3. 填写数据库名称,注意名称不要以数字开头,不要有中文.空格.特殊字符等 4. 选择“字符集”,常用的为utf ...

  2. 《CoderXiaoban》第八次团队作业:Alpha冲刺 2

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...

  3. unsupervised learning: clustering介绍

    unsupervised learning 上面是监督学习与无监督学习的比较,监督学习的training set是一组带label(y)的训练集,而无监督学习不带有label(y). 上图中的监督学习 ...

  4. linux第一天命令

    命令 :   命令 [选项] [参数]   /;根目录 用户主目录:/home/用户名   <==>  ~   1.ls 显示路径中的内容   ls [参数] [路径] ls ls -l  ...

  5. go实现多聊天并发 服务端

    package main import ( "fmt" "net" "time")type Client struct { ch chan ...

  6. Oracle ACS 绑定变量窥视 条件

    1. ACS简介 Oracle Database 11g提供了Adaptive Cursor Sharing (ACS)功能,以克服以往不该共享的游标被共享的可能性.ACS使用两个新指标:sensit ...

  7. .net之大文件断点续传

    HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...

  8. linux 最大TCP连接数限制

    ----------------------------------------------问题--------------------------------------------- 前几日碰到问 ...

  9. [golang] 抓包注入分析

    视频信息 Packet Capture, Analysis, and Injection with Goby John Leonat GopherCon 2016 https://www.youtub ...

  10. maven ssm 编译异常记录:

    maven ssm 编译异常记录: javax.servlet.jsp 解决: 清除 tomacat libraries 修改 pom 文件 <dependency> <groupI ...