Прогнозирование после точной настройки с ошибкой модели 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)

0 ответов

Другие вопросы по тегам