本博客讲述了在 jupyter notebook 上 argparse.parse_args() 无法正确运行的解决办法
问题描述
argparse 是我比较习惯的命令行解析程序,之前一直在pycharm 中用(教程请见本人另外一篇博客),今天在 jupyter notebook 中使用的时候发现报错了!
报错代码:
import argparse
import os
import random
import numpy as np
import torch
import torch.backends.cudnn as cudnn
arg=argparse.ArgumentParser()
arg.add_argument("--workers", type=int, help="数据加载线程的个数,默认8 线程", default=4)
arg.add_argument("--batchSize", type=int, help="输入批数据的大小,默认200",default=200)
arg.add_argument("--lr", type=float, default=0.0002, help="学习率,默认大小是 0.0002")
arg.add_argument("--dirCheckpoints", default="./checkpoints", help="存放训练好的模型的目录",type=str)
arg.add_argument("--dirImageOutput", default="./imgout", help="图片输出目录",type=str)
arg.add_argument("--dirTestOutput", default="./testout", help="测试 结果或者图像 的目录",type=str)
arg.add_argument("--modelPath",type=str,default="",help="存放训练好的模型的目录")
arg.add_argument("--useCuda", default=True, help="是否使用 GPU 加速,默认不使用",type=bool)
arg.add_argument("--randomSeed", help="用于实验可重复性验证的随机种子",default=None,type=int)
arg.add_argument("--useDense", default=False, help="是否使用 dense net 架构",type=bool)
arg.add_argument("--beta1",default=0.5,type=float,help="Adam 优化器需要使用的参数")
arg.add_argument("--epochs",default=100,type=int,help="对整个数据集训练多少次")
args=arg.parse_args()
print(arg)
在pycharm 中运行
完全没有问题
在 jupyter notebook 上运行报错
报错如下:
---------------------------------------------------------------------------
SystemExit Traceback (most recent call last)
<ipython-input-2-242e2a512bed> in <module>
21 arg.add_argument("--epochs",default=100,type=int,help="对整个数据集训练多少次")
22
---> 23 print (arg.parse_args())
/usr/local/anaconda3/lib/python3.7/argparse.py in parse_args(self, args, namespace)
1750 if argv:
1751 msg = _('unrecognized arguments: %s')
-> 1752 self.error(msg % ' '.join(argv))
1753 return args
1754
/usr/local/anaconda3/lib/python3.7/argparse.py in error(self, message)
2499 self.print_usage(_sys.stderr)
2500 args = {'prog': self.prog, 'message': message}
-> 2501 self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
/usr/local/anaconda3/lib/python3.7/argparse.py in exit(self, status, message)
2486 if message:
2487 self._print_message(message, _sys.stderr)
-> 2488 _sys.exit(status)
2489
2490 def error(self, message):
SystemExit: 2
usage: ipykernel_launcher.py [-h] [--workers WORKERS] [--batchSize BATCHSIZE]
[--lr LR] [--dirCheckpoints DIRCHECKPOINTS]
[--dirImageOutput DIRIMAGEOUTPUT]
[--dirTestOutput DIRTESTOUTPUT]
[--modelPath MODELPATH] [--useCuda USECUDA]
[--randomSeed RANDOMSEED] [--useDense USEDENSE]
[--beta1 BETA1] [--epochs EPOCHS]
ipykernel_launcher.py: error: unrecognized arguments: -f /home/qianqianjun/.local/share/jupyter/runtime/kernel-c98830c2-ff40-4c6f-9180-f93ccb4f200e.json
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2
可见是 argparse.parse_args() 函数出了问题
解决办法
在 argparse.parse_args() 函数中添加参数 args=[] 即可解决问题:
时间原因,没能深究为啥这样就好了,以后有时间补上 ……
来源:CSDN
作者:假装很坏的谦谦君
链接:https://blog.csdn.net/qq_38863413/article/details/104668570