Jupyter notebook 上无法使用argparse.parse_args()

前提是你 提交于 2020-03-05 11:29:53

本博客讲述了在 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=[] 即可解决问题:
在这里插入图片描述
时间原因,没能深究为啥这样就好了,以后有时间补上 ……

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!