Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
77
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@uenonuenon

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

はじめに

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

77
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
77
Help us understand the problem. What is going on with this article?