0

%matplotlib - строковая магия вызывает SyntaxError в Python-скрипте

64

Описание проблемы на StackOverflow

Я пытаюсь запустить следующий код в 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

# настройки
LEARNING_RATE = 1e-4
# нужно установить 20000 в локальной среде, чтобы получить 0.99 точность
TRAINING_ITERATIONS = 2000        

DROPOUT = 0.5
BATCH_SIZE = 50

# установить в 0, чтобы тренироваться на всех доступных данных
VALIDATION_SIZE = 2000

# номер изображения для отображения
IMAGE_TO_DISPLAY = 10

Но я получил следующую ошибку:

line 10
    %matplotlib inline
    ^
SyntaxError: invalid syntax.

Хотелось бы получить объяснение данной ошибки.

P.S. Код взят из проекта соревнования на Kaggle: Digit Recognizer.

3 ответ(ов)

0

Поскольку line magics поддерживаются только в командной строке IPython и не поддерживаются в обычном Python CLI, используйте: 'exec(%matplotlib inline)' вместо %matplotlib inline.

0

Если вы добавите следующий код в начало вашего скрипта, matplotlib будет работать в режиме inline в окружении IPython (например, в Jupyter или плагине Hydrogen для Atom), и это будет также работать, если вы запустите скрипт напрямую из командной строки (в этом случае matplotlib не будет работать в режиме inline, и графики откроются в всплывающих окнах, как обычно).

from IPython import get_ipython
ipy = get_ipython()
if ipy is not None:
    ipy.run_line_magic('matplotlib', 'inline')

Таким образом, этот код проверяет, есть ли активная сессия IPython, и если да, то включает режим inline для визуализации графиков. Если же скрипт запускается из терминала, графики будут отображаться в отдельных окнах.

0

В случае, если вы используете Julia, аналог команды %matplotlib из IPython — это пакет PyPlot, который предоставляет интерфейс Julia к Matplotlib, включая встроенные графики в пьесах IJulia. (Аналог numpy по умолчанию уже загружен в Julia.)

С учетом PyPlot аналог команды %matplotlib inline — это просто использование PyPlot, так как PyPlot по умолчанию генерирует встроенные графики в IJulia.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь