#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))