2021SC@SDUSC
目录
上篇博客对pargs.py中的pargs方法的一部分进行分析,接下来会对pargs方法的剩余部分进行分析。
pargs方法
由于下面分析代码需要,先在此列出。
parser.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:存储参数的值。这是默认的动作
- store_const:存储被const命名参数指定的值。
- store_true和store_false :这些是 'store_const' 分别用作存储 True 和 False 值的特殊用例。
- append:存储一个列表,并且将每个参数值追加到列表中。使用与一个选项多次出现的情况。
- append_const:这存储一个列表,并将const命名参数指定的值追加到列表中。
- count:计算一个关键字参数出现的数目或次数。
- nargs - 命令行参数应当消耗的数目。
- N:N个参数形成一个列表
- ?:从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生default值
- *: 所有当前命令行参数被聚集到一个列表中
- +:所有当前命令行参数被聚集到一个列表中。另外,当前没有至少一个命令行参数时会产生一个错误信息
- const - 被一些 action 和 nargs 选择所需求的常数。
- default - 当参数未在命令行中出现时使用的值。
- type - 命令行参数应当被转换成的类型。
- choices - 可用的参数的容器。
- required - 此命令行选项是否可省略 (仅选项可用)。
- help - 一个此选项作用的简单描述。
- metavar - 在使用方法消息(-h)中使用的参数值示例。
- dest - 被添加到 parse_args() 所返回对象上的属性名。
#parser.add_argument('-max_grad_norm', type=int, default=1)//-max_grad_norm一个选项字符串的列表,当参数未在命令行中出现时使用值1,命令行参数应当被转换成类型int #data parser.add_argument("-nosave",action='store_false',help='dont save')//-nosave一个选项字符串的列表,'store_const' 用作存储False,此选项作用是dont save parser.add_argument("-save",required=True,help="where to save model")//-save一个选项字符串的列表,此命令行选项可以省略,此选项作用是where to save model parser.add_argument("-outunk",default=5,type=int,help="unk @ for targets")//-outunk一个选项字符串的列表,当参数未在命令行中出现时使用值5,命令行参数应当被转换成类型int,此选项作用是unk @ for targets parser.add_argument("-entunk",default=5,type=int,help="unk @ for entity vocabulary")//-entunk一个选项字符串的列表,当参数未在命令行中出现时使用值5,命令行参数应当被转换成类型int,此选项作用是unk @ for entity vocabulary parser.add_argument("-datadir",default="data/")//-datadir一个选项字符串的列表,当参数未在命令行中出现时使用值data/ parser.add_argument("-data",default="preprocessed.train.tsv",help="preprocessed data")//-data一个选项字符串的列表,当参数未在命令行中出现时使用值reprocessed.train.tsv,此选项作用是preprocessed data parser.add_argument("-traindata",default="preprocessed.train.tsv",help="preprocessed train data")//-traindata一个选项字符串的列表,当参数未在命令行中出现时使用值reprocessed.train.tsv,此选项作用是preprocessed train data parser.add_argument("-relvocab",default="relations.vocab",type=str,help='vocabulary of graph relations')//-relvocab一个选项字符串的列表,当参数未在命令行中出现时使用值relations.vocab,命令行参数应当被转换成类型str,此选项作用是vocabulary of graph relations parser.add_argument("-savevocab",default=None,type=str)//-savevocab一个选项字符串的列表,当参数未在命令行中出现时使用值None,命令行参数应当被转换成类型str parser.add_argument("-loadvocab",default=None,type=str)//-loadvocab一个选项字符串的列表,当参数未在命令行中出现时使用值None,命令行参数应当被转换成类型str #eval parser.add_argument("-eval",action='store_true')//-eval一个选项字符串的列表,'store_const' 用作存储True #inference parser.add_argument("-max",default=200,type=int,help="max length of generation")//-max一个选项字符串的列表,当参数未在命令行中出现时使用值200,命令行参数应当被转换成类型int,此选项作用是max length of generation parser.add_argument("-test",action='store_true')//-test一个选项字符串的列表,'store_const' 用作存储True #parser.add_argument("-sample",action='store_true')//-sample一个选项字符串的列表,'store_const' 用作存储True parser.add_argument("-inputs",default="../data/fullGraph.test.tsv",type=str)//-inputs一个选项字符串的列表,当参数未在命令行中出现时使用值../data/fullGraph.test.tsv,命令行参数应当被转换成类型str parser.add_argument("-sparse",action='store_true',help="sparse graphs (NOT CURRENTLY IMPLEMENTED)")//-sparse一个选项字符串的列表,'store_const' 用作存储True,此选项作用是sparse graphs (NOT CURRENTLY IMPLEMENTED) parser.add_argument("-plan",action='store_true',help="plan and write (NOT IMPLEMENTED)")//-plan一个选项字符串的列表,'store_const' 用作存储True,此选项作用是plan and write (NOT IMPLEMENTED) parser.add_argument("-ckpt",default=None,type=str,help='load checkpoint')//-ckpt一个选项字符串的列表,当参数未在命令行中出现时使用值None,命令行参数应当被转换成类型str,此选项作用是load checkpoint parser.add_argument("-plweight",default=0.2,type=float,help="plan weight (NOT IMPLEMENTED)")//-plweight一个选项字符串的列表,当参数未在命令行中出现时使用值0.2,命令行参数应当被转换成类型float,此选项作用是plan weight (NOT IMPLEMENTED) parser.add_argument("-entdetach",action='store_true',help='dont backprop into entity embeddings')//-entdetach'store_const' 用作存储True,此选项作用是dont backprop into entity embeddings parser.add_argument("-gpu",default=0,type=int)//-gpu一个选项字符串的列表,当参数未在命令行中出现时使用值0,命令行参数应当被转换成类型int args = parser.parse_args()//ArgumentParser 通过parse_args()方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构建,在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数。 if args.gpu == -1://如果gpu没有被使用 args.gpu = 'cpu'//那么使用cpu args.device = torch.device(args.gpu)//torch.device代表将torch.Tensor分配到的设备的对象 #args.options_file = "../elmo/elmo_2x2048_256_2048cnn_1xhighway_options.json" #args.weight_file = "../elmo/elmo_2x2048_256_2048cnn_1xhighway_weights.hdf5" return args//返回参数args 至此,pargs.py中的pargs方法全部分析完毕。