Как я могу использовать 38 классов вместо 1000 в предсказаниях декодирования model.predict - PullRequest
0 голосов
/ 26 марта 2019

Я нахожу ошибку в обнаружении болезней растений с использованием модели глубокого обучения resnet50 каждый раз, когда возникает сообщение об ошибке в decode_predictions

ошибка

ожидает серию предсказаний (то есть двумерный массив формы (сэмплы, 1000)). Найден массив с формой: (1, 38) "

enter code here


model = ResNet50(weights='imagenet',include_top=False,classes=38)

try:
model = load_model('/content/drive/My 
Drive/color/checkpoints/ResNet50_model_weights.h5')
print("model loaded")  
except:
print("model not loaded")

img_path = '/content/drive/My Drive/color/test/0/appleblackrot188.jpg' 
img = image.load_img(img_path, target_size=(300, 300))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

preds = model.predict(x)
print('Predicted:', decode_predictions(preds,top=3)[0])

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

decode_predictions работает только для ImageNet (количество классов = 1000). Для этих 38 классов растений вы должны написать свои собственные прогнозы декодирования, основанные на метке истинности, назначенной для каждого растения.

0 голосов
/ 26 марта 2019

Вы можете попробовать использовать функцию предварительной обработки:

import tensorflow as tf
# Using the keras wrapper on tensorflow (it must be the same using just keras).

IMAGE = [] # From image source, i did it from the camera.

toPred = tf.keras.applications.resnet50.preprocess_input(np.expand_dims(tf.keras.preprocessing.image.img_to_array(IMAGE), axis=0))

Может быть, это может помочь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...