问题产生
最近打算把cycleGAN的代码写个详细的注释,于是想用jupyter看一下中间的某些部分都是啥。结果就出现问题了,原来的代码中是给命令行直接run写的,用jupyter没法传递参数,即使你写了default,也会出现报错。
错误大概是这样的:
An exception has occurred, use %tb to see the full traceback.
ipykernel_launcher.py: error: unrecognized arguments: -f /share/home/li......
SystemExit: 2
解决方法
解决办法非常简单:
- 对应命令行的不传递参数:
在你的parser.add_argument
里写好default。找到代码里的parser.parse_args()
(command+f),改成parser.parse_args([])
。如果还不行找找代码里是不是还有parser.parse_known_args()
,把它改成parser.parse_known_args([])
。 - 对应命令行的传递参数:
找到代码里的parser.parse_args()
,改成这种形式parser.parse_args(['--modelname','cycleGAN'])
。
这个问题出现的原因大概是因为argparse这个模块写包时候的问题,对于jupyter这种情况会有点冲突。上述两种方法就是对应着命令行传参数和不传参数。具体的细节这篇文章解释的很清楚:https://zhuanlan.zhihu.com/p/55013625