Прогнозирование после точной настройки с ошибкой модели Inception_Resnet_V2 (Keras)
predict('../input/cat_dog/cat_dog/zebra.jpeg')
ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D array of shape (samples, 1000)). Found array with shape: (1, 2)
Это ошибка, которую я получаю, я взял InceptionResNetV2 оштрафованный настроил его. Так что нет вершины, также у моего классификатора есть только 2 класса вместо 1000. Я знаю, что это проблема, поскольку в ошибке упоминается, что для входной формы нужно 1000, но получено два.
Тем не менее, я застрял в том, как решить проблему декодирования, чтобы форма ввода ожидала 2 класса вместо тысячи.
моя функция предсказания
def predict(image_path):
# Load and resize the image using PIL.
# Plot the image.
plt.imshow(image)
plt.show()
image = Image.open(image_path).resize((299,299))
image = np.array(image)
image = image.reshape(-1,299,299,3)
image = 2 * (image/255.0)-1.0
# This outputs an array with 1000 numbers corresponding to
# the classes of the ImageNet-dataset.
pred = model.predict(image)
# Decode the output of the model.
pred_decoded = decode_predictions(pred)[0]
# Print the predictions.
for code, name, score in pred_decoded:
print("{0:>6.2%} : {1}".format(score, name))
Мои тонкие настройки слоев
base_model = InceptionResNetV2(input_shape = (299,299,3),
include_top= False,
weights='imagenet')
for layer in base_model.layers:
layer.trainable = False
top_layers = base_model.output
top_layers = GlobalAveragePooling2D()(top_layers)
top_layers = Dense(1024, activation='relu')(top_layers)
predictions = Dense(2, activation='softmax')(top_layers)
model= Model(inputs =base_model.input, outputs = predictions)