MaxPoolingOp по умолчанию поддерживает только NHWC на ​​устройстве типа CPU - PullRequest
0 голосов
/ 25 октября 2019

Я пытался запустить прогноз на модели SegNet, но когда функция прогнозирования вызывала его вызов, я получил ошибку.

Я также пытался запустить прогноз с помощью with tf.device('/cpu:0'):, но получил то же самоеошибка

if __name__ == '__main__':
    # path to the model
    model = tf.keras.models.load_model('segnet_weightsONNXbackToKeras3.h5')

    model.compile(loss='categorical_crossentropy', optimizer='RMSprop', metrics=['accuracy'])

    model.summary()

    input_shape = [None, 360, 480, 3]
    output_shape = [None, 352, 480, 20]

    img = cv2.imread('test4.jpg')
    input_image = img
    img = cv2.resize(img, (input_shape[2], input_shape[1]))
    img = np.reshape(img, [1, input_shape[1], input_shape[2], input_shape[3]])

    if normalize:
        img = img.astype('float32') / 255

    model.summary()
    classes = model.predict(img)[0]
    colors = []
    for i in range(output_shape[3]):
        colors.append(generate_color())

    maxMatrix = np.amax(classes, axis=2)
    prediction = np.zeros((output_shape[1], output_shape[2], 3), dtype=np.uint8)

2019-10-25 19:32:03.126831: E tensorflow/core/common_runtime/executor.cc:642] Executor failed to create kernel. Invalid argument: Default MaxPoolingOp only supports NHWC on device type CPU
     [[{{node model/LAYER_7/MaxPool}}]]
Traceback (most recent call last):
  File "../mold_segmentation_h5VM.py", line 62, in <module>
    classes = model.predict(img)[0]
  File "..\anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 909, in predict
    use_multiprocessing=use_multiprocessing)
  File "..\anaconda3\lib\site-packages\tensorflow_core\python\eager\execute.py", line 67, in quick_execute
    six.raise_from(core._status_to_exception(e.code, message), None)
  File "<string>", line 3, in raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError:  Default MaxPoolingOp only supports NHWC on device type CPU
     [[node model/LAYER_7/MaxPool (defined at D:\EB-AI\tools\anaconda3\lib\site-packages\tensorflow_core\python\framework\ops.py:1751) ]] [Op:__inference_distributed_function_4421]

Function call stack:
distributed_function

1 Ответ

0 голосов
/ 25 октября 2019

Без test4.jpg сложно тестировать решения. Однако ошибка Default MaxPoolingOp only supports NHWC on device type CPU означает, что модель может принимать входные данные только в виде n_examples x высота x ширина x каналов. Я думаю, что ваши cv2.resize и последующие np.reshape строки не выводят изображение в правильном формате. Попробуйте распечатать форму изображения перед вызовом model.predict () и убедитесь, что оно имеет формат n_examples x высота x ширина x каналов.

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