运行GitHub项目ID-disentanglement时必填参数name相关报错的解决咨询
运行GitHub项目ID-disentanglement时必填参数name相关报错的解决咨询
看起来你遇到的问题核心不是名字本身,而是参数传递的方式不对——从你提供的arglib.py代码里能看到,name是一个位置参数(没有--前缀的必填参数),而不是可选的命名参数,这是关键!
先给你理清楚问题根源:
在BaseArgs.add_args()里,name的定义是:
self.parser.add_argument('name', type=str, help='Name under which run will be saved')
这种不带--的参数是位置参数,意思是它不需要指定参数名,直接在所有命令参数的最后面跟上你的实验名称就行,不能写成--name my_experiment_name,否则程序会把--name当成一个未定义的参数,报“unrecognized arguments”。
接下来给你两种场景的解决方法:
1. 命令行直接运行的正确方式
假设你已经指定了必填的--pretrained_models_path参数,正确的命令应该是:
python main.py --pretrained_models_path /path/to/your/pretrained_models my_experiment_name
注意:my_experiment_name直接放在所有参数的最后,不需要加任何前缀。如果你的名称里有空格,要用引号包起来,比如"my test experiment"。
2. Anaconda IDE的Run/Debug配置正确姿势
很多人会在IDE的“运行参数”框里错误地写--name my_experiment_name,这就会触发报错。正确的配置应该是:
- 在“Parameters”输入框里,先填好所有带
--的参数(比如--pretrained_models_path ./pretrained),然后直接在最后加上你的实验名称,不需要加--name。
比如参数框里的内容应该是:
--pretrained_models_path ./pretrained --gpu 0 my_experiment_name
额外排查点
如果按上面的方法还是报错,可以检查这几点:
- 确认你已经正确填写了另一个必填参数
--pretrained_models_path(它是带--的必填项,必须先指定) - 检查实验名称里有没有特殊符号(比如
@、#这类),尽量用字母、数字、下划线的组合 - 查看项目里有没有其他继承
BaseArgs的类,是否在重写add_args时不小心覆盖了name参数的定义
备注:内容来源于stack exchange,提问作者JerryChi
相关产品推荐
相关产品推荐

