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') 

Der obige Code kann erfolgreich ausgeführt werden. Die folgende ZeileJupyterNotebook mit Args Parser

args = parser.parse_args() 

gibt diesen Fehler:

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. 

-Code von https://github.com/avisingh599/face-rating

+1

In dem Notebook haben Sie keine Befehlszeile, oder? wo erwartest du, dass es die argumente zum parsen bekommt? –

+0

Wahrlich. Gibt es im Notebook irgendwelche Arbeiten? –

Antwort

0

Die featuredim Argument eine ganze Zahl erwartet (dh type=int), aber sie haben in einem String übergeben, gibt den Pfad zu einer JSON-Datei an.

Sie könnten dieses Skript zum Funktionieren bringen, indem Sie seine Logik ein wenig umwandeln, so dass es in einem JSON gelesen und dann die Ganzzahl aus einem Schlüsselwert extrahiert (ähnlich wie viele Skripte in .ini Konfigurationsdateien lesen) , aber im Kontext dessen, was du machst, ist das übertrieben (und würde dir in deinem Dilemma nicht wirklich helfen, da du Jupyter benutzen willst). Die Datei, die Sie an das Skript übergeben, bietet keinen direkten Zugriff auf die in Ihrem Notizbuch definierten Variablen und speichert nur Informationen, die von der Anwendung verwendet werden (z. B. die IP-Adresse, auf der das Notebook ausgeführt wird, und die TCP-Portnummer, die es verwendet). Zur Veranschaulichung ist das, was eine ähnliche JSON-Datei auf meinem Laptop wie folgt aussieht:

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 
} 

Ihre beste Wette den Code aus trainModel.py zu nehmen ist, entfernen Sie ArgumentParser, und ersetzen Sie alle Verweise auf die Argumente mit fest codierten Variablen. Fügen Sie dann jede der Zeilen im geänderten Code zu Ihrem Jupyter-Notizbuch hinzu und ändern Sie die fest codierten Variablen manuell im Notizbuch. Für andere Skripte, die ArgumentParser verwenden, möchten Sie möglicherweise sehen, ob sie die mit parse_args() extrahierten Argumente in eine Funktion übergeben und dann eine Importanweisung ähnlich der folgenden verwenden, um diese Funktion direkt in Ihr Notebook zu importieren. So etwas wie das Folgende:

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