De lo que he recopilado hasta ahora, hay varias formas diferentes de volcar un gráfico de TensorFlow en un archivo y luego cargarlo en otro programa, pero no he podido encontrar ejemplos / información claros sobre cómo funcionan. Lo que ya sé es esto:
- Guarde las variables del modelo en un archivo de punto de control (.ckpt) usando a
tf.train.Saver()
y restáurelas más tarde ( fuente ) - Guarde un modelo en un archivo .pb y cárguelo de nuevo usando
tf.train.write_graph()
ytf.import_graph_def()
( fuente ) - Cargue un modelo desde un archivo .pb, reentrenarlo y volcarlo en un nuevo archivo .pb usando Bazel ( fuente )
- Congele el gráfico para guardar el gráfico y los pesos juntos ( fuente )
- Úselo
as_graph_def()
para guardar el modelo, y para pesos / variables, mapearlos en constantes ( fuente )
Sin embargo, no he podido aclarar varias preguntas sobre estos diferentes métodos:
- Con respecto a los archivos de puntos de control, ¿solo guardan los pesos entrenados de un modelo? ¿Los archivos de puntos de control se pueden cargar en un nuevo programa y usarse para ejecutar el modelo, o simplemente sirven como formas de guardar los pesos en un modelo en un momento / etapa determinada?
- Respecto
tf.train.write_graph()
, ¿también se guardan los pesos / variables? - Con respecto a Bazel, ¿solo puede guardar / cargar archivos .pb para volver a capacitarse? ¿Existe un comando simple de Bazel solo para volcar un gráfico en un .pb?
- Con respecto a la congelación, ¿se puede cargar un gráfico congelado en el uso
tf.import_graph_def()
? - La demostración de Android para TensorFlow se carga en el modelo Inception de Google desde un archivo .pb. Si quisiera sustituir mi propio archivo .pb, ¿cómo lo haría? ¿Necesitaría cambiar algún código / método nativo?
- En general, ¿cuál es exactamente la diferencia entre todos estos métodos? O más ampliamente, ¿cuál es la diferencia entre
as_graph_def()
/.ckpt/.pb?
En resumen, lo que estoy buscando es un método para guardar un gráfico (como en, las diversas operaciones y demás) y sus pesos / variables en un archivo, que luego se puede usar para cargar el gráfico y los pesos en otro programa. , para uso (no necesariamente para continuar / reentrenamiento)
La documentación sobre este tema no es muy sencilla, por lo que cualquier respuesta / información sería muy apreciada.