import argparse模块总结

最近老师安排了一个动作识别的项目,之前没有做过相关的东西,所以,每一个行代码都要死磕,现在打算记录下!
argparse 是 Python 内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。

基本框架

def get_parser():
    parser = argparse.ArgumentParser(description="Demo of argparse")
    parser.add_argument('--name', default='Great')
return parser
parser = get_parser()
args = parser.parse_args()
  1. parser = argparse.ArgumentParser()
    parser = argparse.ArgumentParser()创建一个解析对象 方法参数须知:一般我们只选择用description

  2. parser.add_argument()
    向该对象中添加你要关注的命令行参数和选项

  3. arg = parser.parse_args()
    arg = parser.parse_args() 进行解析

  4. nargs: 设置参数在使用可以提供的个数
    使用方式如下:

parser.add_argument('-name', nargs=x)

其中x的候选值和含义如下:

含义
‘?’0或1个参数
‘’*’0或所有参数
‘+’所有,并且至少一个参数
  1. help:指定参数的说明信息
    help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义

  2. choices:参数值只能从几个选项里面选择

  3. type:参数类型
    参数类型 默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int或type=bool,

  4. default:没有设置值情况下的默认参数
    没有设置值情况下的默认参数 required: 表示这个参数是否一定需要设置

  5. required: 表示这个参数是否一定需要设置
    如果设置了required=True,则在实际运行的时候不设置该参数将报错
    最后附上注释了的部分代码块内容 方便以后自己查阅!

def get_parser():
    # parameter priority: command line > config > default
    parser = argparse.ArgumentParser(
        description='Directed Graph Neural Net for Skeleton Action Recognition') #- help时显示的开始文字
    parser.add_argument(
        '--work-dir',
        default='./work_dir/temp',
        help='the work folder for storing results')

    parser.add_argument(
        '--model-saved-name', default='')
    parser.add_argument(
        '--config',
        default='./config/nturgbd-cross-view/test_bone.yaml',
        help='path to the configuration file')

    # processor
    parser.add_argument(
        '--phase', default='train', help='must be train or test')
    parser.add_argument(
        '--save-score',
        type=str2bool,
        default=False,
        help='if ture, the classification score will be stored')

    # visulize and debug
    parser.add_argument(
        '--seed', type=int, default=1, help='random seed for pytorch')
    parser.add_argument(
        '--log-interval',
        type=int,
        default=100,
        help='the interval for printing messages (#iteration)')
    parser.add_argument(
        '--save-interval',
        type=int,
        default=2,
        help='the interval for storing models (#iteration)')
    parser.add_argument(
        '--eval-interval',
        type=int,
        default=5,
        help='the interval for evaluating models (#iteration)')
    parser.add_argument(
        '--print-log',
        type=str2bool,
        default=True,
        help='print logging or not')
    parser.add_argument(
        '--show-topk',
        type=int,
        default=[1, 5],
        nargs='+',
        help='which Top K accuracy will be shown')

    # feeder
    parser.add_argument(
        '--feeder', default='feeder.feeder', help='data loader will be used')
    parser.add_argument(
        '--num-worker',
        type=int,
        default=os.cpu_count(),
        help='the number of worker for data loader')
    parser.add_argument(
        '--train-feeder-args',
        default=dict(),
        help='the arguments of data loader for training')
    parser.add_argument(
        '--test-feeder-args',
        default=dict(),
        help='the arguments of data loader for test')

    # model
    parser.add_argument(
        '--model', default=None, help='the model will be used')
    parser.add_argument(
        '--model-args',
        type=dict,
        default=dict(),
        help='the arguments of model')
    parser.add_argument(
        '--weights',
        default=None,
        help='the weights for network initialization')
    parser.add_argument(
        '--ignore-weights',
        type=str,
        default=[],
        nargs='+',
        help='the name of weights which will be ignored in the initialization')

    # optim
    parser.add_argument(
        '--base-lr', type=float, default=0.01, help='initial learning rate')
    parser.add_argument(
        '--step',
        type=int,
        default=[60, 90],
        nargs='+',
        help='the epoch where optimizer reduce the learning rate')
    parser.add_argument(
        '--device',
        type=int,
        default=0,
        nargs='+', #nargs: 设置参数在使用可以提供的个数N   参数的绝对个数(例如:3)?' 0或1个参数 '*' 0或所有参数m'+'所有,并且至少一个参数
        help='the indexes of GPUs for training or testing')
    parser.add_argument(
        '--optimizer', default='SGD', help='type of optimizer')
    parser.add_argument(
        '--nesterov', type=str2bool, default=True, help='use nesterov or not')
    parser.add_argument(
        '--batch-size', type=int, default=32, help='training batch size')
    parser.add_argument(
        '--test-batch-size', type=int, default=32, help='test batch size')
    parser.add_argument(
        '--start-epoch',
        type=int,
        default=0,
        help='start training from which epoch')
    parser.add_argument(
        '--num-epoch',
        type=int,
        default=120,
        help='stop training in which epoch')
    parser.add_argument(  #type:参数类型 默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int或type=bool,
        '--weight-decay',
        type=float,     #choices:参数值只能从几个选项里面选择
        default=0.0001,  #help参数的值可以给使用工具的人提供该参数是用来设置什么的说明,对于大型的项目,help参数和很有必要的,不然使用者不太明白每个参数的含义
        help='weight decay for optimizer')#default:没有设置值情况下的默认参数 required: 表示这个参数是否一定需要设置
    parser.add_argument(
        '--freeze-graph-until',
        type=int,
        default=10,
        help='number of epochs before making graphs learnable')

    # parser.add_argument('--only_train_part', default=False)
    # parser.add_argument('--only_train_epoch', default=0)
    # parser.add_argument('--warm_up_epoch', default=0)
    return parser
    #def get_parser():使用argparser从命令行获取信息的基本框架
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值