2017-05-24 17 views
3

私は画像分類プロジェクトを実装しています。モデルを生成して保存しました。それはうまく訓練されました。テスト画像を分類するためにkerasのpredict_generatorを使用すると、各画像に対して予測numpy配列の各画像に対して複数の行が得られます。ケラス "predict_generator"の出力をどのように解釈するのですか?

予測コード:

from keras.models import load_model 
from keras.preprocessing.image import ImageDataGenerator 
from keras.preprocessing.image import img_to_array, load_img 
import numpy as np 

# dimensions of our images. 
img_width, img_height = 150, 150 
batch_size = 16 

test_model = load_model('first_try1.h5') 


img = load_img('data/train/dogs/dog.2.jpg',False,target_size=(img_width,img_height)) 

validation_data_dir="test1" 

test_datagen = ImageDataGenerator(rescale=1./255) 
validation_generator = test_datagen.flow_from_directory(
    validation_data_dir, 
    target_size=(img_width, img_height), 
    batch_size=batch_size, 
    class_mode='binary') 
print(len(validation_generator.filenames)) 
predictions=test_model.predict_generator(validation_generator,len(validation_generator.filenames)); 
#print(predictions) 

出力:

Found 5 images belonging to 1 classes. 
5 
[[ 0.0626688 ] 
[ 0.07796276] 
[ 0.46529126] 
[ 0.28495458] 
[ 0.07343803] 
[ 0.07343803] 
[ 0.0626688 ] 
[ 0.46529126] 
[ 0.28495458] 
[ 0.07796276] 
[ 0.0626688 ] 
[ 0.28495458] 
[ 0.07796276] 
[ 0.46529126] 
[ 0.07343803] 
[ 0.07796276] 
[ 0.46529126] 
[ 0.0626688 ] 
[ 0.07343803] 
[ 0.28495458] 
[ 0.0626688 ] 
[ 0.07796276] 
[ 0.46529126] 
[ 0.07343803] 
[ 0.28495458]] 

答えて

7

だから、あなたは発電機回のlen(validation_generator.filenames)数呼び出しているマニュアルに従って - サイズbatch_sizeのサンプルを呼び出して、それぞれのが提供されます。 ImageGeneratorがどのように実装されているのか - バッチを完了するのに十分なファイルがない場合(あなたの場合、batch_size=16がありますがフォルダ内に5つの画像しかありません) - 可能な限り最大数の画像が返されます。 len(validation_generator.filenames) * 5 = 25の画像を評価することができます。そのような結果が得られます(注意深く見てみると、5つの数字に同じ値があります)。このサンプルをfilenamesの順番で取得するには、とbatch_size=5に設定された新しい発電機を作成し、一度呼び出す(たとえば、batch_size=1と5回呼び出す)必要があります。

+0

助けていただきありがとうございます。 –

関連する問題