GCN代码中argparse解读
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--no-cuda', action='store_true', default=False,
help='Disables CUDA training.')
parser.add_argument('--fastmode', action='store_true', default=False,
help='Validate during training pass.')
parser.add_argument('--seed', type=int, default=42, help='Random seed.')
parser.add_argument('--epochs', type=int, default=200,
help='Number of epochs to train.')
parser.add_argument('--lr', type=float, default=0.01,
help='Initial learning rate.')
parser.add_argument('--weight_decay', type=float, default=5e-4,
help='Weight decay (L2 loss on parameters).')
parser.add_argument('--hidden', type=int, default=16,
help='Number of hidden units.')
parser.add_argument('--dropout', type=float, default=0.5,
help='Dropout rate (1 - keep probability).')
args = parser.parse_args()
#===========================以下为自己添加的内容==================
no_cuda = args.no_cuda
fastmode = args.fastmode
seed = args.seed
epochs = args.epochs
lr = args.lr
print( ' no_cuda:',no_cuda,'\n',
'fastmode:',fastmode,'\n',
'seed:',seed,'\n',
'epochs:',epochs,'\n',
'lr:',lr,'\n')
argparse 可以认为是从终端输入参数相关的包
首先,在终端输入命令python demo.py
运行结果如下:
以上所有的参数输出的都是add_argument
中的default
的值
输入命令python demo.py -h
,输出结果如下
前面一列带有-
或者--
是在终端中的输入样式,也就是说,要向改变某个参数的值,首先得按照下面的格式输出。要改变LR,首先得输入--lr
,以此类推
如何通过接受终端输入的参数代替默认值呢?
对于int
和float
这样的类型的数据,我们按照上一步给出的一些参数(红色框框)可以在终端直接输入想给定的参数。
例如输入命令python demo.py --seed 58 --epochs 100 --lr 0.5
,结果如下
此时,seed epochs lr 都不再是默认值,而变成了我们通过终端输入的参数
那么问题来了?对于逻辑类型的,比如此处的no_cuda fastmode,可不可以直接输入参数True呢?通过尝试,是不能够直接输入True的,对于逻辑类型的,add_argument
中设定了action
参数,只要直接输入参数--no-cuda
或者--fastmode
即可,相当于电路开关一样,按下就通,相当于执行了store_true
输入命令如下python demo.py --no-cuda --fastmode
,运行结果如下:
由默认False变为了True