2017-10-05 9 views
0

Je suis nouveau à Keras et j'ai l'intention de stocker la sortie de mon réseau pour chaque époque. À cette fin, je veux utiliser Tensorbaord pour observer la couche de sortie dans son environnement.fonction de rappel dans Keras pour enregistrer la sortie prévue à chaque époque

class OutputObserver(Callback): 
"""" 
callback to observe the output of the network 
""" 

    def on_train_begin(self, logs={}): 
     self.epoch = [] 
     self.out_log = [] 

    def on_epoch_end(self, epoch, logs={}): 
     self.epoch.append(epoch) 
     self.out_log.append(self.model.get_layer('Dense03/Output').output) 

Ceci va stocker les tenseurs de sortie dans une liste. Le problème est que je ne peux faire ni 1. convertir ceci en un tableau Numpy afin qu'il puisse lire un fichier CSV, ... 2. écrire un résumé en utilisant Tensorflow (comme Keras n'a pas cette capacité), puis analyser la sortie en Tensorboard.

Je serais heureux d'entendre vos opinions sur le stockage et la visualisation de la couche de sortie à chaque époque de formation.

Sincèrement, Saeed.

+1

Peut-être que [cette réponse] (https://stackoverflow.com/a/45321332/1531463) (la partie après ** Modifier **) peut aider. Il visualise la couche de sortie avec TensorBoard en alimentant les données de validation via le modèle dans 'on_epoch_end'. –

+0

@ Yu-Yang Merci beaucoup. J'ai trouvé la réponse utile. –

Répondre

2

Pour enregistrer le calque de sortie pour chaque époque, vous devez transmettre les données d'apprentissage/de validation à l'objet de rappel. Le rappel que j'ai utilisé est le suivant:

class OutputObserver(Callback): 
"""" 
callback to observe the output of the network 
""" 

def __init__(self, xy): 
    self.out_log = [] 
    self.xy = xy 

def on_epoch_end(self, epoch, logs={}): 
    self.out_log.append(self.model.predict(self.xy.x_train, batch_size=p.bath_size)) 

où xy.x_train représente les données d'apprentissage.

maintenant, le tableau est un out_log numpy.ndarray de forme (epoch_number, data_number, prediction_length):

type(prediction_logs[0]) 
Out[62]: numpy.ndarray