¿Cuál es la forma correcta de encapsular la creación y capacitación del modelo Tensorflow en una clase?

En aplicaciones pequeñas, estructurar su código en clases no es necesario y puede complicar innecesariamente el código y hacer que las piezas sean más difíciles de reutilizar en otros lugares. Sin embargo, para proyectos más grandes, estructurar su código TensorFlow en clases puede ser valioso, y hay varias formas de hacerlo.

Lo más probable es que desee tener el código de su modelo en una o más clases separadas del código de entrenamiento. A menudo utilizo una función simple para el entrenamiento, que llama a subfunciones para inicializar variables o restaurar un punto de control, crear escritores de resumen, lanzar hilos de ejecución de cola e iteraciones permanentes de entrenamiento y evaluación.

Para estructurar su modelo, tiene sentido separar subgráficos lógicos de su cálculo, como la red hasta los logits, la predicción, la pérdida de tareas, las pérdidas de regularización y el paso de optimización a los métodos. Como solo desea crear esas subgrafías una vez, puede envolver los métodos en un decorador que almacena en caché los resultados.

Aquí está mi publicación de blog que contiene una buena manera de implementar tal comportamiento y algunos pensamientos adicionales: Estructurando sus modelos de TensorFlow.