CNN не предсказывает класс изображения

#python #python-3.x #tensorflow #conv-neural-network

#python #python-3.x #тензорный поток #conv-нейронная сеть

Вопрос:

Я создал модель обнаружения опухоли головного мозга с использованием CNN, когда я пытаюсь протестировать образец изображения, предсказав его класс, возникает ошибка.

Согласно ошибке, входные данные в модель должны иметь 1 дополнительное измерение. Как мне предсказать класс изображения. Фрагмент кода, который выдает ошибку:

 best_model.predict(image)
  

Ошибка заключается в следующем

Ошибка значения: ввод 0 слоя zero_padding2d несовместим со слоем: ожидаемый ndim= 4, найденный ndim = 3. Получена полная форма: [Нет, 240, 3]

Ожидаемая форма видна в предупреждении:

 WARNING:tensorflow:Model was constructed with shape (None, 240, 240, 3) for input Tensor("input_1_1:0", shape=(None, 240, 240, 3), dtype=float32), but it was called on an input with incompatible shape (None, 240, 3).
  

Я попробовал решение, но оно по-прежнему выдает ту же ошибку:
Вот изображение

Комментарии:

1. какова форма image ? Кажется, что это недопустимый размер для того, что ожидает модель

2. @David S Изображение взято из того же набора данных, который используется для обучения модели. Форма изображения: (240,240,3)

Ответ №1:

Итак, проблема в том, что модель предполагает, что первым измерением является количество пакетов. В вашем случае он «думает», что у вас 240 пакетов, в которых каждое изображение имеет размер (240,3) .

Что вам нужно сделать, это расширить размеры изображения перед переходом к модели. вы можете использовать expand_dims

пример:

 image = tf.zeros([240, 240, 3])
tf.expand_dims(image, axis=0)
  

Это добавит пакетное измерение к изображению, и модель сможет правильно его использовать.

Комментарии:

1. @nanan Я посмотрел на изображение, которое вы добавили к вопросу, вы должны image = tf.expand_dims(image, axis=0) посмотреть документ, он возвращает новый расширенный тензор