Ошибка выполнения ONNX: node->GetOutputEdgesCount() == 0 было ложным. Не могу удалить узел

У меня есть простая модель Keras RNN, состоящая из встраивания, LSTM и линейных слоев:

      loaded_model.layers

Out[23]: 
[<keras.layers.embeddings.Embedding at 0x2275dc1f6a0>,
 <keras.layers.recurrent_v2.LSTM at 0x2275dc8d5b0>,
 <keras.layers.core.dense.Dense at 0x2275dd17730>,
 <keras.layers.core.activation.Activation at 0x2275de3ee80>]

Модель хорошо работает в Керасе при сбросе и загрузке. Я преобразовал загруженную модель в ONNX opset 15, используя tf2onnx.convert.from_keras, но я получаю эту ошибку при инициализации объекта:

      onnxruntime.capi.onnxruntime_pybind11_state.RuntimeException: [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Exception during initialization: D:\a\_work\1\s\onnxruntime\core\graph\graph.cc:3275 onnxruntime::Graph::RemoveNode node->GetOutputEdgesCount() == 0 was false. Can't remove node sequential/lstm_7/transpose as it still has output edges.

Это соответствующий узел в Netron:

Действительно, у него есть выходные края...

Я не хочу видеть эту ошибку. Это какая-то оптимизация, которую я могу отключить в InferenceSession с участием disabled_optimizers=...? (к сожалению, этот аргумент не задокументирован)

Спасибо.

0 ответов

Другие вопросы по тегам