2015-09-12 11 views
9

Pracuję nad strukturą Caffe i korzystam z interfejsu PyCaffe. Używam skryptu w języku Python, uzyskanego z konwertowania notebooka IPython 00-classification.ipynb do testowania klasyfikacji przez wyszkolony model dla ImageNet. Ale każdy get_ipython() oświadczenie w skrypcie daje następujący błąd:NameError: nazwa 'get_ipython' nie jest zdefiniowana

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

W skrypcie mam importowanie następujące:

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... 

Czy ktoś mógłby mi pomóc rozwiązać ten problem błąd?

+0

gdzie to zaimportowałeś? –

+0

Zaimportowałem to w skrypcie Pythona, w którym próbuję użyć instrukcji get_ipython(). –

Odpowiedz

16

Trzeba uruchomić skrypt z ipython:

$ ipython python/my_test_imagenet.py 

get_ipython Wtedy będzie już w kontekście globalnym.

Uwaga: Importowanie go przez from IPython import get_ipython w zwykłej powłoce python nie będzie działać tak, jak naprawdę potrzebujesz ipython.

+1

Próbowałem powyższe, ale daje następujący błąd: "UsageError: nieprawidłowe żądanie GUI u'line", prawidłowe są: pyglet, osx, qt5, qt, glut, gtk, gtk3, tk, wx ". –

+3

@AdarshChauhan używa "matplotlib auto" zamiast "matplotlib inline". –

+0

@beezz Jak mogę przetestować (wewnątrz skryptu), czy mój scipt został uruchomiony przez 'ipython' zamiast' python'? – SebMa

3

Jeśli masz zamiar uruchomić przekonwertowany notatnik .py, powinieneś po prostu skomentować oświadczenia get_ipython(). Wyjście matlibplot nie może być pokazane wewnątrz konsoli, więc będziesz musiał wykonać trochę pracy. Idealnie, iPython nie powinien generować tych instrukcji. Możesz użyć poniższych, aby wyświetlić działki:

plt.show(block=True) 
Powiązane problemy