Уровень пакетной нормализации, вызывающий ошибку при преобразовании из .h5 в .onnx

#tensorflow #keras #onnx

Вопрос:

Мне нужно преобразовать .h5 модель в a .onnx , но когда я использую BatchNormalization слой, код выдает следующую ошибку:

Ошибка типа: значение «» не является допустимым типом данных атрибута.

И дает предупреждение:

tf выполнение eager_mode: True модель tf.keras eager_mode: False ПРЕДУПРЕЖДЕНИЕ: Ни одна соответствующая операция ONNX не соответствует узлу tf.op keras_learning_фазе типа placeholderвзаимодействие по умолчанию Сгенерированная модель ONNX должна выполняться с поддержкой пользовательских операций.

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

Код для преобразования является:

 from tensorflow.python.keras import backend as K
from tensorflow.python.keras.models import load_model
import onnx
import keras2onnx

onnx_model_name = 'CNN_T_93_96_V_90_88.onnx'

model = load_model('CNN_T_93_96_V_90_88.h5')

onnx_model = keras2onnx.convert_keras(model, model.name)
onnx.save_model(onnx_model, onnx_model_name)
 

А линия со BatchNormalization слоем-это:

 model.add(BatchNormalization(momentum=momentum, scale=flag, center=flag))