0
parser = argparse.ArgumentParser() 
parser.add_argument('-model', type=str, default='linear_model') 
parser.add_argument('-featuredim', type=int, default=20) 
parser.add_argument('-inputfeatures', type=str, default='/Users/myname/Downloads/face-rating-master/data/features_ALL.txt') 
parser.add_argument('-labels', type=str, default='/Users/myname/Downloads/face-rating-master/data/ratings.txt') 

上記のコードは正常に実行できます。次の行JupyterNotebook with Args Parser

args = parser.parse_args() 

は、このエラーを与える:

usage: ipykernel_launcher.py [-h] [-model MODEL] [-featuredim FEATUREDIM] 
          [-inputfeatures INPUTFEATURES] [-labels LABELS] 
ipykernel_launcher.py: error: argument -featuredim: invalid int value: '/Users/myname/Library/Jupyter/runtime/kernel-7d72fc3c-2c11-47e4-87f3-3587b2461a52.json' 
An exception has occurred, use %tb to see the full traceback. 

コードhttps://github.com/avisingh599/face-rating

+1

ノートブックにはコマンドラインはありませんか?あなたはどこから構文解析の引数を得ることを期待していますか? –

+0

本当に。ノートブックには何か回避策はありますか? –

答えて

0

からfeaturedim引数は整数(すなわち、type=int)を見込んでいますが、その文字列で渡されましたjsonファイルへのパスを示します。

このスクリプトは、ロジックを少し改造してJSONを読み込み、キー値から整数を抽出できるようにすることができます(いくつのスクリプトが.ini設定ファイルで読み込まれるかに似ています)あなたがやっていることの文脈の中では、それは過度のことです(あなたがJupyterを使いたいので、本当にあなたのジレンマにあまり役立たないでしょう)。参考までに、スクリプトに渡すファイルでは、ノートブックで定義されている変数に直接アクセスすることはできず、アプリケーションで使用されている情報(ノートブックが実行されているIPアドレスや使用しているTCPポート番号)。

09/28 18:26:53 [[email protected]: ~/Library/Jupyter/runtime] 
$ less kernel-40dad791-ffa1-4687-bcd1-3ec831884c83.json 
{ 
    "stdin_port": 60476, 
    "ip": "127.0.0.1", 
    "control_port": 60477, 
    "hb_port": 60478, 
    "signature_scheme": "hmac-sha256", 
    "key": "b52ef99c-0a1a70b17b600daea5263a29", 
    "kernel_name": "", 
    "shell_port": 60474, 
    "transport": "tcp", 
    "iopub_port": 60475 
} 

最善の策は、trainModel.pyからコードを取るArgumentParserを削除し、ハードコーディングされた変数を引数への参照を交換することである:説明するために、これは次のように私のラップトップ上で同様のJSONファイルが見えるものです。次に、変更されたコードの各行をJupyterノートブックに追加し、ノートブック内でハードコードされた変数を手動で変更します。

ArgumentParserを使用する他のスクリプトの場合は、parse_args()を使用して抽出された引数を関数に渡し、次のようなimportステートメントを使用してその関数をノートブックに直接インポートすることができます。次のようなものです:

cd [directory containing script] 
from [script name minus the .py extension] import [function name]