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!
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.
As-tu essayé :
conda install ipykernel --name Python3
python -m ipykernel install