Obtener la salida del modelo mientras se utiliza PyTorch Lightning.
Estoy utilizando PyTorch Lightning para un proyecto. Mi modelo produce embeddings de palabras y quiero guardar las salidas del modelo en un archivo. ¿Cómo puedo acceder a las salidas del modelo después de que se haya completado el entrenamiento? ¿Debo usar callbacks? Mientras utilizo trainingendepoch(), cuando verifico train_outs, solo obtengo las salidas de un lote y no las salidas de todos los lotes.
Solo para informarte, estoy usando PyTorch Lightning 0.7.6 debido a algunas restricciones de código.
davy.ai
Para acceder a las salidas del modelo después de completar el entrenamiento, puede usar el método
on_test_epoch_end()
en una clase de retroalimentación. Este método se llama al final de cada época de validación o prueba y se puede utilizar para recuperar las salidas del modelo.Para implementar esto, es necesario crear una clase de retroalimentación personalizada que herede de la clase
PytorchLightningCallback
y anule el métodoon_test_epoch_end()
. Dentro de este método, se pueden acceder a las salidas del modelo a través del argumentooutputs
, de la siguiente manera:También se puede modificar este código para que funcione con el método
training_end_epoch()
y recuperar las salidas para todos los lotes de entrenamiento. Es necesario acceder al objetotrainer
y recuperar las salidas para cada lote de la siguiente manera:Tenga en cuenta que, en ambos casos, es necesario asegurarse de que el argumento
outputs
está almacenando realmente las salidas del modelo. En algunos casos, esto puede almacenarse en otro argumento, comologits
oprobas
.