原文链接:https://zhuanlan.zhihu.com/p/111010774
action=“store_true”这个怎么理解?
有了action这一参数,就相当于把–train参数设成了一个“开关”。我们是不需要给这个开关传递具体的值的,只需要“拨一下”这个开关就行了。
action=“store_true”,就是说当拨动了这个“开关”,就将参数–train存储为True,否则参数会存储为False,因为我们设置的default=False
小番外:argparse模块基本用法
由于本专栏参考了tensorflow官方的示例代码,代码中有部分关于argparse知识的内容。因此这里稍微进行说明。
argparse说来其实很简单。
一般来说,我们直接执行python文件,例如在控制台执行py文件,我们是不能控制的。
argparse的作用就是:允许我们在外部使用python文件的时候,传入参数。
![](https://i-blog.csdnimg.cn/blog_migrate/0d8db5c6b29b0ee15ec62f27b2f045dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15c29541aee309b6448bf9cdbcfee855.png)
例如上图中,执行tutorial_AC.py文件,在文件后加上“——”,带入参数train。
那train这个参数代表什么呢? 我们看示例代码中,其实分为训练和测试两部分。
if args.train:
...
if args.test:
…
我们可以通过设置argparse,在执行的时候就把参数train传入,控制我们需要执行的部分。
示例代码解释
# add arguments in command --train/test
parser = argparse.ArgumentParser(description=‘Train or test neural net motor controller.’)
parser.add_argument(’–train’, dest=‘train’, action=‘store_true’, default=False)
parser.add_argument(’–test’, dest=‘test’, action=‘store_true’, default=True)
args = parser.parse_args()
明白之后,大家理解代码也很简单了。
- 我们需要定义parser, 可以把parser看成是一个解释器。把我们在外部传入的命令,变成我们代码中的参数。
- 在parser加入参数add_argument
- 首先,我们需要定义外部命令,如 ‘–train’,’–test’。只有定义了的才是合法的命令。
- 然后,需要用一个参数对应命令: dest=‘train’ ,这就是为一个命令增加对应的参数,以供我们代码中调用。
- 另外,需要注意default,默认设置,就是当执行py文件时,如果没有带入参数,那么按照默认设置执行。在示例代码中,会有默认为test的,所以有同学会在执行时,发现没有训练就是因为这个原因。
- 我们可以用.parse_args(),获取所有的参数。并赋值给args
- 通过args调用参数。例如在示例代码中: args.train
=你的支持,就是在下努力的原动力=
如果专栏对你有用,请点赞并关注在下喔。如果发现有问题,也可以在文章下留言。
你的每一点关注,都是在下的继续努力的动力来源!感激!