argparse模块
这里使用了argparse模块,argparse是python用于解析命令行参数和选项的标准模块。简单来说,就是能够使我们在终端输入运行命令时同时输入训练的参数和选项。
使用步骤
常常可以把argparse的使用简化成下面四个步骤:
- import argparse
- parser = argparse.ArgumentParser()
- parser.add_argument()
- parser.parse_args()
上面四个步骤解释如下:
- 首先导入该模块;
- 然后创建一个解析对象;
- 然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;
- 最后调用parse_args()方法进行解析;解析成功之后即可使用。
例子
# 导入库
import argparse
# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Demo of argparse')
# 2. 添加命令行参数
parser.add_argument('--epochs', type=int, default=30)
parser.add_argument('--batch', type=int, default=4)
# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)
epochs = args.epochs
batch = args.batch
print('show {} {}'.format(epochs, batch))
我们在执行这段程序时的命令为python fun_test.py --epochs 30 --batch 4
,表示指定参数epochs
为30,batch
为4。
细节说明
- 在添加的命令行参数中,有的参数会指定
action
选项,如parser.add_argument("--no_cuda", action='store_true')
,它的含义是在执行程序输入了该参数名,则该参数值为True
,否则该参数值为False
,如python fun_test.py --no_cuda
,表示指定no_cuda
的参数值为True
,而python fun_test.py
,表示指定no_cuda
的参数值为False
。 - 在添加的命令行参数中,有的参数会指定
required=True
选项,表示在执行该段程序时该参数必须被指定。 - 用命令行指定参数值时,格式为
python file_name.py --arg_name arg_value
,表示arg_name
对应的参数值设定为arg_value
。