在设置环境两天后,我正在关注这个 tensorflow 教程,我终于可以使用 cmd 运行 premade_estimator.py
但是当我尝试在 jupyter notebook 中运行相同的代码时,出现了这个错误:
> usage: ipykernel_launcher.py [-h] [--batch_size BATCH_SIZE] > [--train_steps TRAIN_STEPS] > > ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\david\AppData\Roaming\jupyter\runtime\kernel-4faecb24-6e87-40b4-bf15-5d24520d7130.json > > ``` > > 发生异常,使用 %tb 查看完整的回溯。 > > ``` > SystemExit: 2 > > C:\Anaconda3\envs\python3x\lib\site-packages\IPython\core\interactiveshell.py:2918: > UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1) > > ``` 我尝试使用以下方法修复它但没有成功:
pip install –ignore-installed –upgrade jupyter
pip install ipykernel python -m ipykernel install
conda install notebook ipykernel ipython kernelspec install-self
”`
任何想法将不胜感激!谢谢!
原文由 virtualdvid 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道了!报错的原因是这段代码使用
argparse
并且这个模块是用来编写用户友好的命令行界面的,所以看起来,它与 Jupyter Notebook 有冲突。我在此 页面 中找到了解决方案:
我们要做的是:
删除或评论这些行:
并替换
args
对于使用库
easydict
的字典,以这种方式:使用
easydict
我们可以访问字典值作为参数的属性。更新
经过今年对 python 的深入研究,我发现这个问题的解决方案更加简单(我们不需要使用任何外部库或方法)。
argparse
只是从终端向 python 脚本传递参数的众多方法之一。当我尝试在 jupyter notebook 中这样做时,显然那是行不通的。我们可以直接在函数中替换参数,例如:现在,如果我们的函数有一长串参数,我们可以使用
*args
或**kargs
。*args
在函数中传递一个元组作为参数,对于这种情况,特别是:**kargs
将字典作为参数传递给我们的函数:只需谷歌一下,您就会找到关于如何同时使用它们的很好的解释,这里有 一份 我用来研究它的文档。