2017-12-19 24 views
-1

나는 흐름을 디렉토리에서 가져 와서 이미지를 가져 와서 생성기를 만들었는데이 생성기를 사용하여 확률과 클래스를 예측하기 위해 predict_generator에서 사용했다. 문제는 내가 두 가지를 모두 예측할 때 임의의 위치에서 임의의 인수를 사용하지 않지만 레이블이 뒤섞이는 것입니다. 올바른 레이블에 올바른 클래스를 어떻게 할당 할 수 있습니까? 다음은 내 전체 코드입니다 :predict_classes()에서 각각의 jpeg 파일로 클래스를 매핑하는 방법은 무엇입니까?

코드 클래스의

from __future__ import division 
import numpy as np 
from keras import applications 
from keras.preprocessing.image import ImageDataGenerator 
from keras.models import Sequential 
from keras.layers import Dense, Dropout, Flatten 

top_model_weights_path = '/home/rehan/ethnicity.071217.23-0.28.hdf5' 
path = "/home/rehan/countries/pakistan/guys/test/" 
img_width, img_height = 139, 139 

confidence = 0.8 

model = applications.InceptionResNetV2(include_top=False, weights='imagenet', 
             input_shape=(img_width, img_height, 3)) 

print("base pretrained model loaded") 

validation_generator = ImageDataGenerator(rescale=1./255).flow_from_directory(path, target_size=(img_width, img_height), 
                 batch_size=6) 

print("generator built") 
print(validation_generator.filenames) 

features = model.predict_generator(validation_generator) 

print("features found") 

model = Sequential() 
model.add(Flatten(input_shape=(3, 3, 1536))) 
model.add(Dense(256, activation='relu')) 
model.add(Dropout(0.5)) 
model.add(Dense(6, activation='softmax')) 
model.load_weights(top_model_weights_path) 
print("top model loaded") 
prediction_proba = model.predict_proba(features) 
prediction_classes = model.predict_classes(features) 

print(prediction_proba) 
print(prediction_classes) 

출력 파일 이름의

[4 4 4 4 0 4 1 0 4 1 3 4] 

출력

['test1/pakistan_guys_19_0327850289.jpg', 'test1/pakistan_guys_19_0328320258.jpg', 'test1/pakistan_guys_19_0328792595.jpg', 'test1/pakistan_guys_19_0329098521.jpg', 'test1/pakistan_guys_19_0330327554.jpg', 'test1/pakistan_guys_19_0331605496.jpg', 'test1/pakistan_guys_19_0340513245.jpg', 'test1/pakistan_guys_19_0340525097.jpg', 'test1/pakistan_guys_19_0340536960.jpg', 'test1/pakistan_guys_19_0340551769.jpg', 'test1/pakistan_guys_19_0341250408.jpg', 'test1/pakistan_guys_19_0341327910.jpg'] 

답변

0

기본적으로 shuffle이 True로 설정되어 있으면 발전기를 false와 같이 다음과 같이 변경하십시오.

validation_generator = ImageDataGenerator(rescale=1./255).flow_from_directory(path, target_size=(img_width, img_height), batch_size=6, shuffle=False)