J'essaie d'exécuter les codes suivants sur Spyder (Python 2.7.11):
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import tensorflow as tf
# settings
LEARNING_RATE = 1e-4
# set to 20000 on local environment to get 0.99 accuracy
TRAINING_ITERATIONS = 2000
DROPOUT = 0.5
BATCH_SIZE = 50
# set to 0 to train on all available data
VALIDATION_SIZE = 2000
# image number to output
IMAGE_TO_DISPLAY = 10
Mais j'ai eu cette erreur:
line 10
%matplotlib inline
^
SyntaxError: invalid syntax.
J'apprécie si quelqu'un me donne une explication.
P.S. le code provient du projet de compétition Kaggle: Digit Recognizer
Les magics de ligne ne sont pris en charge que par la ligne de commande IPython. Ils ne peuvent pas simplement être utilisés dans un script, car la syntaxe de %something
n'est pas correcte Python.
Si vous souhaitez effectuer cette opération à partir d'un script, vous devez accéder à l'API IPython, puis appeler la fonction run_line_magic
.
Au lieu de %matplotlib inline
, vous devrez faire quelque chose comme ceci dans votre script:
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
Une approche similaire est décrite dans cette réponse , mais elle utilise la fonction obsolète magic
.
Notez que le script doit encore être exécuté en IPython. Sous Vanilla Python, la fonction get_ipython
renvoie None
et get_ipython().run_line_magic
lèvera un AttributeError
.
Comme la magie des lignes est uniquement prise en charge par la ligne de commande IPython et non par Python cl, utilisez: 'exec(%matplotlib inline)'
au lieu de %matplotlib inline
La syntaxe '%' dans %matplotlib inline
est reconnue par iPython (où il est configuré pour gérer les méthodes magiques), mais pas par Python lui-même, ce qui donne une SyntaxError. On donne ici une solution.
Si vous incluez le code suivant en haut de votre script, matplotlib
s'exécutera en ligne dans un environnement IPython
(comme jupyter, un hydrogène atom plugin ...), et il fonctionnera toujours si vous lancez le script directement via la ligne de commande (matplotlib
ne s'exécutera pas en ligne et les graphiques s'ouvriront comme d'habitude dans une fenêtre contextuelle).
from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
ipy.run_line_magic('matplotlib', 'inline')
Il y a plusieurs raisons pour lesquelles cela ne fonctionnerait pas.
Il est possible que matplotlib ne soit pas correctement installé. avez-vous essayé de courir:
conda install matplotlib
Si cela ne fonctionne pas, examinez votre variable d'environnement% PATH%, contient-elle vos bibliothèques et vos chemins python?
C'est le cas que vous utilisez Julia:
L'analogue de% matplotlib d'IPython dans Julia consiste à utiliser le package PyPlot, qui fournit une interface Julia à Matplotlib, y compris les tracés en ligne dans les cahiers IJulia. (L'équivalent de numpy est déjà chargé par défaut dans Julia.) Etant donné à PyPlot, l'analogue de% matplotlib inline utilise PyPlot, puisque PyPlot utilise par défaut les tracés en ligne dans IJulia.