집에 있는 서버에 tensorflow가 설치되어 있는데, ssh로 접속하여 실행한다. 결과물이 텍스트같이 터미널로 표시되면 볼수 있는데 그림으로 표시되면 터미널에 표시가 안된다.
Traceback (most recent call last): File "imagetran.py", line 13, in <module> plt.imshow(image) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/pyplot.py", line 3010, in imshow ax = gca() File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/pyplot.py", line 928, in gca return gcf().gca(**kwargs) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/pyplot.py", line 578, in gcf return figure() File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/pyplot.py", line 527, in figure **kwargs) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 46, in new_figure_manager return new_figure_manager_given_figure(num, thisFig) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 53, in new_figure_manager_given_figure canvas = FigureCanvasQTAgg(figure) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 76, in __init__ FigureCanvasQT.__init__(self, figure) File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", line 68, in __init__ _create_qApp() File "/home/now0930/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/backends/backend_qt5.py", line 138, in _create_qApp raise RuntimeError('Invalid DISPLAY variable') RuntimeError: Invalid DISPLAY variable
마지막에 Invalid DISPLAY variable이라고 뜨고 죽는데 아래와 같이 변경하면 된다.
import matplotlib matplotlib.use('Agg') import tensorflow as tf import matplotlib.image as mpimg import matplotlib.pyplot as plt # First, load the image filename = "./MarshOrchid.jpg" image = mpimg.imread(filename) # Print out its shape #print(image.shape) plt.imshow(image) plt.savefig('test.jpg') # Create a TensorFlow Variable x = tf.Variable(image, name='x') model = tf.initialize_all_variables() with tf.Session() as session: x = tf.transpose(x, perm=[1, 0, 2]) session.run(model) result = session.run(x) print(result.shape) mpimg.imsave('test.jpg',image) mpimg.imsave('test.jpg',result)
디스플레이가 있는 PC에서 다운로드해 보면 된다..이게 웹으로 보내면 좋은데, 아직 그런게는 없나보다. stack overflow의 여기에서 답을 얻었다.
질문은..
Generating a PNG with matplotlib when DISPLAY is undefined
시스템에 따라 설정파일을 바꾸면 귀찮게 안써도 되는데, 나의 경우 어디에 설정파일이 있는지 몰라 그냥 써야겠다.