web-dev-qa-db-fra.com

Comment réparer ipykernel_launcher.py: erreur: arguments non reconnus dans jupyter?

Je suis ce tensorflow tutorial après deux jours de configuration de l’environnement, j’ai enfin pu exécuter premade_estimator.py à l’aide de cmd

 

mais lorsque j'essaie d'exécuter le même code dans un cahier Jupyter, j'obtiens cette erreur:

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

Une exception s'est produite, utilisez% tb pour afficher le suivi complet.

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)

J'ai essayé de le réparer sans succès en utilisant:

pip install --ignore-installed --upgrade jupyter

pip install ipykernel
python -m ipykernel install

conda install notebook ipykernel
ipython kernelspec install-self

Toute idée sera appréciée! Merci!

2
virtualdvid

J? ai compris! L'erreur est due au fait que ce code utilise argparse et que ce module est utilisé pour écrire des interfaces de ligne de commande conviviales. Il semble donc qu'il existe un conflit avec Jupyter Notebook.

J'ai trouvé la solution dans cette page :

Ce que nous devons faire, c'est:

Supprimer ou commenter ces lignes:

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

et remplacez args

args = parser.parse_args(argv[1:])

pour un dictionnaire utilisant la bibliothèque easydict de cette manière:

args = easydict.EasyDict({
    "batch_size": 100,
    "train_steps": 1000
})

Avec easydict, nous pouvons accéder aux valeurs dict en tant qu'attributs des arguments.

Mettre à jour

Après avoir passé toute cette année à plonger plus profondément dans le langage python, j’ai trouvé que la solution à cette question était beaucoup plus simple (nous n’avons pas besoin d’utiliser une bibliothèque ou une méthode externe). argparse n'est qu'un des nombreux moyens de passer des arguments à un script en python à partir du terminal. Quand j'ai essayé de le faire dans un cahier Jupyter, cela ne fonctionnait évidemment pas. Nous pouvons simplement remplacer directement dans la fonction les paramètres tels que:

funtion(batch_size=100, train_steps=1000)

Maintenant, si nous avons une longue liste de paramètres pour notre fonction, nous pouvons utiliser *args ou **kargs.

*args passer un tuple en tant que paramètre dans la fonction, dans ce cas en particulier, il sera:

args = (100, 1000)
function(*args)

**kargs passer un dictionnaire comme arguments de notre fonction:

args = {"batch_size": 100,
        "train_steps": 1000}
function(**args)

il suffit de google et vous trouverez une très bonne explication sur la façon de les utiliser tous les deux, ici un documentation que j'avais l'habitude d'étudier.

9
virtualdvid

As-tu essayé :

conda install ipykernel --name Python3
python -m ipykernel install
0
An0n