Я реализовал Efficien tNet в Keras для двоичной задачи с использованием генератора изображений. В тестовом случае, когда я предсказываю вывод, он возвращает массив с набором вероятностей, но относится только к одному классу, здесь код и вывод:
test_image_generator = ImageDataGenerator(
rescale=1./255
)
real_test=test_image_generator.flow_from_directory(
directory='/content/real_test',
target_size=(224, 224),
color_mode="rgb",
batch_size=1,
class_mode=None,
shuffle=False,
#seed=42
)
Результат:
real_test.reset()
from keras.models import load_model
efficient_net_custom_model = load_model('model_efficientnet4.h5',compile=False)
pred = efficient_net_custom_model.predict_(real_test, steps = len(real_test), verbose = 1)
print (pred)
Теперь при печати прогноза для 4 разных изображений он возвращает:
[[0.45415235]
[0.52390164]
[0.9999932 ]
[0.99946016]]
В основном только одна вероятность вывода (я думаю) для каждого изображения, и невозможно сказать, какой класс является фактическим. не так ли? Как я могу решить эту проблему?
Спасибо
Изменить:
Включая код модели
def output_custom_model(prebuilt_model):
print(f"Processing {prebuilt_model}")
prebuilt = prebuilt_model(include_top=False,
input_shape=(224, 224, 3),
weights='imagenet')
output = prebuilt.output
output = GlobalMaxPooling2D()(output)
output = Dense(128, activation='relu')(output)
output = Dropout(0.2)(output)
output = Dense(1, activation='sigmoid')(output)
model = Model(inputs=prebuilt.input, outputs=output)
model.compile(optimizer='sgd', loss='binary_crossentropy',
metrics=METRICS)
return model
efficient_net_custom_model = output_custom_model(EfficientNetB4)
filepath='model_efficientnet4.h5'
efficient_net_history =
efficient_net_custom_model.fit_generator(train_generator,
epochs=20,
validation_data=validation_generator,
)