LoginSignup
90

More than 3 years have passed since last update.

Jupyter lab / notebookで argparseそのままで実行する方法

Last updated at Posted at 2018-11-14

はじめに

Jupyter labやJupyter notebookが非常に便利なツールであることは言うまでもないことです。
しかし、落ちているブログラムをJupyterで編集しようとして、


def main():
    parser = argparse.ArgumentParser(description='ChainerMN example: MNIST')
    parser.add_argument('--batchsize', '-b', type=int, default=100,
                        help='Number of images in each mini-batch')
    parser.add_argument('--communicator', type=str,
                        default='hierarchical', help='Type of communicator')
    parser.add_argument('--epoch', '-e', type=int, default=20,
                        help='Number of sweeps over the dataset to train')
    parser.add_argument('--gpu', '-g', action='store_true',
                        help='Use GPU')
    parser.add_argument('--out', '-o', default='result',
                        help='Directory to output the result')
    parser.add_argument('--resume', '-r', default='',
                        help='Resume the training from snapshot')
    parser.add_argument('--unit', '-u', type=int, default=1000,
                        help='Number of units')
    args = parser.parse_args()

......

usage: ipykernel_launcher.py [-h] [--batchsize BATCHSIZE]
                             [--communicator COMMUNICATOR] [--epoch EPOCH]
                             [--gpu] [--out OUT] [--resume RESUME]
                             [--unit UNIT]
ipykernel_launcher.py: error: unrecognized arguments: -f /run/user/1218/jupyter/kernel-662a3733-81e6-4d71-9647-27185d96086a.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2

この様なエラーメッセージに出くわしたことはありませんか?

コマンドライン引数は jupyter では対応できないんだ、なんて思っていませんか?

解決策

これを、

args = parser.parse_args()

こう変えます。

args = parser.parse_args(args=[])

なんとこれだけで、同様のエラーが出なくなり、
コマンドラインで実行しているようにJupyter上で実行できます。

ちなみに上の状態では全く引数を指定してない状態を示します。

引数の指定がある場合は

引数の指定がある際は、arg=[ ]の[ ]内に
コマンドラインで打ち込む順にリストに入れます。

例えば以下の様に引数を指定プログラム実行するとします。


$ python test.py --batchsize 200 --epoch 100 -g

この実行と同じ引数指定をして、jupyter上で実行する場合は、該当部分を、

args = parser.parse_args(args=['--batchsize','200','--epoch','100','-g'])

とすれば、実行できます。

皆さんよきJupyter生活を!!

reference

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
90