es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es necesario compilar la DLL de TensorFlow en C++ en modo de depuración para poder depurar / ejecutar el código que depende de ella?

Actualmente estoy escribiendo una extensión para un software propietario. Desafortunadamente, los registros no están completamente disponibles, así que esto es un trabajo en progreso. La extensión se compila en DLL usando Microsoft Visual Studio 2019 y tiene dependencia de Tensorflow 2.6 DLL. La extensión básicamente carga un modelo guardado utilizando C++
LoadSavedModel(session_options, run_options, m_modelDir, { tensorflow::kSavedModelTagServe }, &model_bundle_lite);

y realiza inferencia en imágenes utilizando C++
model_bundle_lite.GetSession()->Run(inputs_, output_names, {}, &predictions);

La DLL de Tensorflow se construyó usando Bazel según las instrucciones.

Actualmente, no hay problemas funcionales si compilo mi extensión con la configuración de lanzamiento. Queríamos verificar algunos aspectos compilando nuestra extensión con la configuración de depuración y utilizando el Tensorflow.dll original. Nada cambia, los modelos son iguales, las imágenes son las mismas. Pero la extensión se bloquea en LoadSavedModel(session_options, run_options, m_modelDir, { tensorflow::kSavedModelTagServe }, &model_bundle_lite);
Los errores no son capturados con declaraciones de captura estándar. No puedo depurar el código que sigue después de la carga del modelo.

¿Cuál podría ser la razón de este comportamiento? Quería verificar solo la funcionalidad de nuestro código, no quiero depurar las funciones de TF en sí mismas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté relacionado con las diferentes configuraciones de las DLLs compiladas. Al compilar con la configuración Debug, el compilador agrega código adicional a las DLLs para habilitar la depuración. Este código adicional puede causar problemas cuando las DLLs se utilizan en una configuración diferente a la que se compiló. También es posible que el problema esté relacionado con la versión de Tensorflow que se está utilizando. Se recomienda utilizar la misma versión de Tensorflow tanto para las configuraciones Debug como Release. Además, es posible que el problema esté relacionado con el entorno en el que se están utilizando las DLLs. Se recomienda asegurarse de que el entorno sea el mismo tanto para las configuraciones Debug como Release.

Comments are closed.