如何使用argparse.ArgumentParser的choices参数修改data_type取值
你运行程序时没有显式传入--data_type参数,因此argparse会自动加载你定义的默认值image_train,可以通过以下三种方式修改为depth_train:
方式1:运行时通过命令行传参(无需修改代码,最灵活)
如果只是单次需要修改参数值,直接在启动脚本的命令后追加参数即可,假设你的程序入口文件名为train.py,执行如下命令:
python train.py --data_type depth_train
参数名和参数值之间用空格或等号连接均可,--data_type=depth_train效果完全相同
方式2:修改参数的默认值(长期生效)
如果需要默认就使用depth_train,直接修改参数定义语句里的default字段即可:
self.parser.add_argument('--data_type', help='the type of current data', type=str, choices=['image_train','image_test','depth_train','depth_test'], default='depth_train') # 此处将原默认值image_train替换为depth_train
修改后即使不主动传命令行参数,程序也会默认使用depth_train作为data_type的取值。
方式3:代码中直接覆盖参数值(动态修改场景使用)
如果需要在参数解析完成后再动态修改取值,可以在参数解析语句之后、调用MyDataSet之前添加赋值语句:
# 假设你的参数解析代码为 self.opt = self.parser.parse_args() self.opt = self.parser.parse_args() self.opt.data_type = 'depth_train' # 新增本行直接覆盖原有参数值 train_dataset=MyDataSet(self.opt.dataset_folder, self.opt.data_type, image_transforms)
内容的提问来源于stack exchange,提问作者Feona
相关产品推荐
相关产品推荐

