2017-08-07 4 views
0

私は、window7でpython3(anaconda)を使用します。画像データセットをPythonで読み込むには? 'Websocket ping timeout'とはどういう意味ですか?

深い学習を勉強するために、私は画像データセットをダウンロードしました。
http://www.cs.princeton.edu/~andyz/downloads/MMU2IrisDatabase.zip
イメージデータセット:995イメージ、65.4MB。

しかし、データセットをロードすると、私は2つの問題に直面しました。

まず、私はsolution_1を試しました。

# Solution_1 

import os 
import numpy as np 
import zipfile 
from PIL import Image 
from io import StringIO, BytesIO 
from scipy import misc 

def import_caltec100(dataset = 'MMU2IrisDatabase.zip'): # file: 'MMU2IrisDatabase.zip' 
    X_array = np.empty((1, 238, 320, 3)) 
    Y_list = list() 
    with zipfile.ZipFile(dataset) as caltec: 
     for i, file in enumerate(caltec.namelist()): 
      if file.split('.')[-1] == 'bmp' and len(file.split('/')[2].split('.')[0]) == 6: 
       img_array = misc.imread(BytesIO(caltec.read(file))) 
       X_array = np.vstack((X_array, img_array.reshape(1, 238, 320, 3))) 
       Y_list.append(int(file.split('/')[2].split('.')[0][:2])) 

      elif file.split('.')[-1] == 'bmp' and len(file.split('/')[2].split('.')[0]) == 7: 
       img_array = misc.imread(BytesIO(caltec.read(file))) 
       X_array = np.vstack((X_array, img_array.reshape(1, 238, 320, 3))) 
       Y_list.append(int(file.split('/')[2].split('.')[0][:3])) 

    X_array = X_array[1:] 
    Y_array = np.array(Y_list) 
    return X_array, Y_array 

jupyterで '119995ms後にWebSocket ping timeout'が返されます。

# Solution_2 

X_array = np.empty((1, 238, 320, 3)) 
Y_list = list() 
for file in os.listdir('MMU2IrisDatabase'): 
    if file.split('.')[-1] == 'bmp' and len(file.split('.')[0]) == 6: 
     img_array = misc.imread('MMU2IrisDatabase/{}'.format(file)) 
     X_array = np.vstack((X_array, img_array.reshape(1, 238, 320, 3))) 
     Y_list.append(int(file.split('.')[0][:2])) 

    elif file.split('.')[-1] == 'bmp' and len(file.split('.')[0]) == 7: 
     img_array = misc.imread('MMU2IrisDatabase/{}'.format(file)) 
     X_array = np.vstack((X_array, img_array.reshape(1, 238, 320, 3))) 
     Y_list.append(int(file.split('.')[0][:3])) 

X_array = X_array[1:] 
Y_array = np.array(Y_list) 

エラーはありませんでしたが、時間がかかりすぎました(ウォールタイム:32分43秒)。

私の困難を解決してください。

まず、119995ms後に 'Websocket ping timeout'が何を意味するのかを知りたい。 第2に、画像データセットを読み込むためのより良い方法はありますか?

+0

テンソルフローの問題ではありません。適切なタグを使用する必要があります。 –

答えて

0

2番目の解決方法の問題は、アレイ全体を常に再作成することです。あなたは、プログラムがそう長く取っているかを知りたい場合は、プロファイラ(https://docs.python.org/2/library/profile.html)を試してみてくださいとにかく

img_data = [] 
for file in os.listdir(dir): 
    if file.endswith('bmp'): 
     img_data.append(misc.imread(os.path.join(dir, file)).reshape(238, 320, 3)) 
X_array = np.array(img_data, dtype=np.float32) 

:私は何をすることは、このようなものです。

関連する問題