私はこのテンソルフローに従っています チュートリアル 2日後に環境を設定した後、ようやくpremade_estimator.py
cmdを使用
しかし、jupyterノートブックで同じコードを実行しようとすると、次のエラーが発生します。
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
どんなアイデアでも感謝します!ありがとう!
わかった!エラーが発生する理由は、このコードが argparse
を使用しており、このモジュールを使用してユーザーフレンドリーなコマンドラインインターフェイスを作成しているためです。 Jupyter Notebook。
私はこの中に解決策を見つけました ページ :
私たちがしなければならないのは:
次の行を削除またはコメント化します。
parser = argparse.ArgumentParser()
parser.add_argument('--batch_size', default=100, type=int, help='batch size')
parser.add_argument('--train_steps', default=1000, type=int,
help='number of training steps')
args
を置き換えます
args = parser.parse_args(argv[1:])
ライブラリ easydict
を次のように使用する辞書の場合:
args = easydict.EasyDict({
"batch_size": 100,
"train_steps": 1000
})
easydict
を使用すると、引数の属性としてdict値にアクセスできます。
更新
今年のすべてがpythonを深く掘り下げた後、私はこの質問の解決策がはるかに単純であることを発見しました(外部のライブラリやメソッドを使用する必要はありません)。 argparse
は、python=でターミナルからスクリプトに引数を渡す多くの方法の1つにすぎません。jupyterノートブックで実行しようとしたとき、明らかにそれはうまくいきませんでした関数内で次のようにパラメーターを直接置き換えるだけです。
funtion(batch_size=100, train_steps=1000)
これで、関数のパラメーターの長いリストがある場合は、*args
または**kargs
を使用できます。
*args
タプルを関数のパラメーターとして渡します。この場合、特に次のようになります。
args = (100, 1000)
function(*args)
**kargs
関数に引数として辞書を渡します。
args = {"batch_size": 100,
"train_steps": 1000}
function(**args)
グーグルするだけで、両方を使用する方法についての非常に良い説明が見つかります。ここでは、これを研究するために使用した documentation です。
やってみました :
conda install ipykernel --name Python3
python -m ipykernel install