Измените предварительно обученную модель на ожидание первого канала в TensorFlow - PullRequest
0 голосов
/ 20 июня 2020

У меня есть изображения формы (пакет, канал, высота, ширина) = (1, 3, 224, 224), которые необходимо передать в предварительно обученную модель TensorFlow. Однако по умолчанию TensorFlow ожидает, что входные данные предварительно обученной модели будут иметь форму (1, 224, 224, 3).

Например:

import tensorflow as tf
import keras2onnx as k2o
import onnx

model = tf.keras.applications.MobileNetV2()
onnx_model = k2o.convert_keras(model, model.name)
onnx.save_model(onnx_model, 'mobilenetv2.onnx')

И при выполнении логического вывода по модели Позже я столкнулся со следующей ошибкой:

InvalidArgument: [ONNXRuntimeError] : 2 : INVALID_ARGUMENT : Got invalid dimensions for input: input_1 for the following indices
 index: 1 Got: 3 Expected: 224
 index: 3 Got: 224 Expected: 3
 Please fix either the inputs or the model.

Как мне сохранить предварительно обученную модель TensorFlow, чтобы сначала ожидать изображения с каналом? Понимание ONNX не обязательно, но рекомендуется для контекста.

1 Ответ

1 голос
/ 20 июня 2020

Вы можете сначала изменить формат данных по умолчанию для каналов в файле конфигурации Keras, перейдя в ~ / .keras / keras. json и изменив строку с "image_data_format": "channels_last" на "image_data_format": "channels_first".

...