with train neural network fashion example tensorflow keras

neural - train keras model with tensorflow



¿Model.compile() inicializa todos los pesos y sesgos en Keras(backend tensorflow)? (2)

No olvide que también necesita compilar el modelo después de cambiar la trainable de una capa, por ejemplo, cuando desea ajustar un modelo como este:

# load VGG model without top classifier # freeze all the layers (i.e. `trainable = False`) # add some layers to the top # compile and train the model on some data # un-freeze some of the layers of VGG by setting `trainable = True` # compile the model again <-- DON''T FORGET THIS STEP! # train the model on some data

Cuando comienzo a entrenar un modelo, no hay un modelo guardado previamente. Puedo usar model.compile() forma segura. Ahora he guardado el modelo en un archivo h5 para continuar mi entrenamiento usando el checkpoint .

Digamos, quiero entrenar más al modelo. Estoy confundido en este punto: ¿puedo usar model.compile() aquí? ¿Y debería colocarse antes o después de la declaración model = load_model() ? Si model.compile() reinicializa todos los pesos y sesgos, debería colocarlo antes de la declaración model = load_model() .

Después de descubrir algunas discusiones, me parece que model.compile() solo es necesario cuando no tengo ningún modelo guardado anteriormente. Una vez que haya guardado el modelo, no es necesario utilizar model.compile() . ¿Es verdadero o falso? Y cuando quiero predecir usando el modelo entrenado, ¿debo usar model.compile() antes de predecir?


¿Cuándo usar?

Si está usando compile , seguramente debe ser después de load_model() . Después de todo, necesitas un modelo para compilar.

¿Qué hace la compile ?

La compilación define la función de pérdida , el optimizador y las métricas . Eso es todo.

No tiene nada que ver con los pesos y puede compilar un modelo tantas veces como quiera sin causar problemas a los pesos pre-entrenados.

Necesita un modelo compilado para entrenar (porque el entrenamiento usa la función de pérdida y el optimizador). Pero no es necesario compilar un modelo para predecir.

¿Necesitas usar compilar más de una vez?

Sólo si:

  • Quieres cambiar uno de estos:
    • Función de pérdida
    • Optimizador / tasa de aprendizaje
    • Métrica
  • Cargaste (o creaste) un modelo que aún no está compilado. O su método de carga / guardado no consideró la compilación anterior.

Consecuencias de compilar de nuevo:

Si vuelve a compilar un modelo, perderá los estados del optimizador .

Esto significa que su entrenamiento sufrirá un poco al principio hasta que ajuste la velocidad de aprendizaje, los momentos, etc. Pero no hay ningún daño en los pesos (a menos que, por supuesto, su velocidad de aprendizaje inicial sea tan grande que el primer entrenamiento cambiar de forma salvaje los pesos ajustados).