python - started - tensorflow tutorial pdf
¿Deberían los usuarios de TensorFlow preferir SavedModel sobre Checkpoint o GraphDef? (1)
Un punto de control contiene el valor de (algunas de las) variables en un modelo TensorFlow. Se crea mediante un Saver
, al que se le da una Variable
específica para guardar, o por defecto guarda todas las Variables (no locales).
Para usar un punto de control, debe tener un Graph
TensorFlow compatible, cuyas Variable
tengan los mismos nombres que la Variable
s en el punto de control. (Si no tiene un Graph
compatible, aún puede cargar los valores almacenados en un punto de control en las Variable
seleccionadas utilizando las utilidades init_from_checkpoint
en contrib.)
SavedModel
es mucho más completo: contiene un conjunto de Graph
( MetaGraph
, de hecho, guardando colecciones y MetaGraph
), así como un punto de control que se supone que es compatible con estos Graph
, y cualquier archivo de activos que sea necesario para ejecutar el modelo (por ejemplo, archivos de vocabulario). Para cada MetaGraph
que contiene, también almacena un conjunto de firmas. Las firmas definen (nombradas) tensores de entrada y salida.
Esto significa que solo con un SavedModel, puede escribir herramientas (como tensorflow/serving
, o la nueva utilidad de línea de comandos saved_model
que aparecerá en tools/
breve) que interpretan o ejecutan los gráficos en su interior. Todo lo que tienes que proporcionar es la información.
En caso de duda, siempre SavedModel
un SavedModel
escribir un SavedModel
, no solo un punto de control. Esto no solo le permite usar tensorflow / servicio (y otras utilidades que aumentarán en número), sino que también le asegura que tiene toda la información necesaria para ejecutar el modelo. No hay nada más frustrante que un punto de control que no puede usar más porque modificó su modelo y ahora es incompatible con los archivos de puntos de control y todo lo que desea hacer es realizar algunas predicciones a través de él para realizar una comparación.
De SavedModel Docs ,
SavedModel, el formato de serialización universal para los modelos TensorFlow.
y
SavedModel envuelve un TensorFlow Saver. El ahorrador se utiliza principalmente para generar los puntos de control variables.
Según tengo entendido, SavedModel
es obligatorio si alguien quiere usar la función TensorFlow. Sin embargo, puedo implementar Tensorflow Model en el servidor de servicio sin SavedModel
: Freeze graph y exportarlo como GraphDef
, y cargar el gráfico en Session utilizando ReadBinaryProto
y Create en C ++ o Import in in Go.
¿Cuál es el propósito de SavedModel? ¿Los usuarios deberían preferir SavedModel sobre Checkpoint o GraphDef para agregar más datos relacionados con el modelo?