#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)
посмотреть документ, он возвращает новый расширенный тензор