Ошибка выполнения 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=...
? (к сожалению, этот аргумент не задокументирован)
Спасибо.