2015-09-12 16 views
9

Sto lavorando su Caffe framework e sull'interfaccia PyCaffe. Sto usando uno script Python ottenuto dalla conversione del Notebook IPython 00-classification.ipynb per testare la classificazione con un modello addestrato per ImageNet. Ma ogni get_ipython() dichiarazione nello script sta dando il seguente errore:NameError: nome 'get_ipython' non definito

$ python python/my_test_imagenet.py 
Traceback (most recent call last): 
    File "python/my_test_imagenet.py", line 23, in <module> 
    get_ipython().magic(u'matplotlib inline') 

Nello script, sto importando il seguente:

import numpy as np 
import matplotlib.pyplot as plt 

get_ipython().magic(u'matplotlib inline') 

# Make sure that caffe is on the python path: 
caffe_root = '/path/to/caffe/' 
import sys 
sys.path.insert(0, caffe_root + 'python') 

import caffe 

plt.rcParams['figure.figsize'] = (10, 10) 
plt.rcParams['image.interpolation'] = 'nearest' 
plt.rcParams['image.cmap'] = 'gray' 

import os 

# ... Rest of the code... 

Qualcuno può aiutarmi a risolvere questo errore?

+0

dove l'hai importato? –

+0

L'ho importato nello script python dove sto cercando di usare l'istruzione 'get_ipython()'. –

risposta

16

Devi eseguire lo script con ipython:

$ ipython python/my_test_imagenet.py 

Poi get_ipython sarà già nel contesto globale.

Nota: l'importazione tramite from IPython import get_ipython nella shell ordinaria python non funzionerà come è realmente necessario ipython in esecuzione.

+1

Ho provato quanto sopra ma dà il seguente errore: "UsageError: richiesta GUI non valida u'inline", quelli validi sono: pyglet, osx, qt5, qt, glut, gtk, gtk3, tk, wx ". –

+3

@AdarshChauhan usa 'matplotlib auto' invece di 'matplotlib inline'. –

+0

@beezz Come posso testare (all'interno di uno script) se la mia scipt è stata lanciata da 'ipython' invece di' python'? – SebMa

3

Se l'intenzione è di eseguire il quaderno di file .py convertito, è necessario commentare le dichiarazioni get_ipython(). L'output matlibplot non può essere mostrato all'interno della console in modo da avere un po 'di lavoro da fare. Idealmente, iPython non avrebbe dovuto generare queste dichiarazioni. È possibile utilizzare seguenti per mostrare i lotti:

plt.show(block=True) 
Problemi correlati