web-dev-qa-db-fra.com

Comment utiliser le rappel Tensorboard de Keras?

J'ai construit un réseau de neurones avec Keras. Je voudrais visualiser ses données par Tensorboard, donc j'ai utilisé:

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
                            write_graph=True, write_images=True)

comme expliqué dans keras.io . Lorsque je lance le rappel, j'obtiens <keras.callbacks.TensorBoard at 0x7f9abb3898>, mais je n'ai aucun fichier dans mon dossier "Graph". Quelque chose ne va pas dans la façon dont j'ai utilisé ce rappel?

124
Simone
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

Cette ligne crée un objet Callback Tensorboard. Vous devez capturer cet objet et le donner à la fonction fit de votre modèle.

tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
...
model.fit(...inputs and parameters..., callbacks=[tbCallBack])

De cette façon, vous avez donné votre objet de rappel à la fonction. Il sera exécuté pendant la formation et générera des fichiers pouvant être utilisés avec tensorboard.

Si vous souhaitez visualiser les fichiers créés lors de la formation, lancez-le dans votre terminal

tensorboard --logdir path_to_current_dir/Graph 

J'espère que cela t'aides !

203
Nassim Ben

Voici comment vous utilisez le rappel TensorBoard :

from keras.callbacks import TensorBoard

tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0,
                          write_graph=True, write_images=False)
# define model
model.fit(X_train, Y_train,
          batch_size=batch_size,
          epochs=nb_Epoch,
          validation_data=(X_test, Y_test),
          shuffle=True,
          callbacks=[tensorboard])
42
Martin Thoma

Changement

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

à

tbCallBack = keras.callbacks.TensorBoard(log_dir='Graph', histogram_freq=0,  
          write_graph=True, write_images=True)

et définir votre modèle

tbCallback.set_model(model)

Courez dans votre terminal

tensorboard  --logdir Graph/
17
Leandro Souza

Si vous travaillez avec la bibliothèque Keras et souhaitez utiliser tensorboard pour imprimer vos graphiques d’exactitude et d’autres variables, suivez les étapes ci-dessous.

étape 1: initialisez la bibliothèque de rappel keras pour importer tensorboard à l'aide de la commande ci-dessous

from keras.callbacks import TensorBoard

étape 2: Incluez la commande ci-dessous dans votre programme juste avant la commande "model.fit ()".

tensor_board = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)

Remarque: Utilisez "./graph". Il va générer le dossier graphique dans votre répertoire de travail actuel, évitez d’utiliser "/ graph".

étape 3: Incluez le rappel Tensorboard dans "model.fit ()". L’échantillon est donné ci-dessous.

model.fit(X_train,y_train, batch_size=batch_size, epochs=nb_Epoch, verbose=1, validation_split=0.2,callbacks=[tensor_board])

étape 4: Exécutez votre code et vérifiez si votre dossier graphique est présent dans votre répertoire de travail. si les codes ci-dessus fonctionnent correctement, vous aurez le dossier "Graph" dans votre répertoire de travail.

étape 5: Ouvrez Terminal dans votre répertoire de travail et tapez la commande ci-dessous.

tensorboard --logdir ./Graph

étape 6: Maintenant, ouvrez votre navigateur Web et entrez l’adresse ci-dessous.

http://localhost:6006

Après avoir entré, la page Tensorbaord s'ouvrira où vous pourrez voir vos graphiques de différentes variables.

14
Sunil Sharma

Voici du code:

K.set_learning_phase(1)
K.set_image_data_format('channels_last')

tb_callback = keras.callbacks.TensorBoard(
    log_dir=log_path,
    histogram_freq=2,
    write_graph=True
)
tb_callback.set_model(model)
callbacks = []
callbacks.append(tb_callback)

# Train net:
history = model.fit(
    [x_train],
    [y_train, y_train_c],
    batch_size=int(hype_space['batch_size']),
    epochs=EPOCHS,
    shuffle=True,
    verbose=1,
    callbacks=callbacks,
    validation_data=([x_test], [y_test, y_test_coarse])
).history

# Test net:
K.set_learning_phase(0)
score = model.evaluate([x_test], [y_test, y_test_coarse], verbose=0)

histogram_freq=2 est le paramètre le plus important à régler lors de l'appel de ce rappel: il définit un intervalle d'époques pour appeler le rappel, dans le but de générer moins de fichiers sur les disques.

Voici donc un exemple de visualisation de l'évolution des valeurs de la dernière convolution lors de l'entraînement une fois vu dans TensorBoard, sous l'onglet "Histogrammes" (et j'ai trouvé que l'onglet "Distributions" contenait des graphiques très similaires, mais inversés sur le côté):

tensorboard weights monitoring

Si vous souhaitez voir un exemple complet en contexte, vous pouvez vous référer à ce projet open-source: https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-1

7
Guillaume Chevalier

Il y a peu de choses.

Premièrement, pas /Graph mais ./Graph

Deuxièmement, lorsque vous utilisez le rappel TensorBoard, transmettez toujours les données de validation, car sans elles, elles ne seraient pas démarrées.

Troisièmement, si vous souhaitez utiliser autre chose que des résumés scalaires, vous ne devez utiliser que la méthode fit, car fit_generator ne fonctionnera pas. Ou vous pouvez réécrire le rappel pour travailler avec fit_generator.

Pour ajouter des rappels, ajoutez-le simplement à model.fit(..., callbacks=your_list_of_callbacks)

1
Andrey Nikishaev

Vous devriez jeter un coup d'œil à Losswise ( https://losswise.com ), qui dispose d'un plugin pour Keras qui est plus facile à utiliser que Tensorboard et qui possède quelques fonctionnalités supplémentaires. Avec Losswise, vous utiliseriez simplement from losswise.libs import LosswiseKerasCallback puis callback = LosswiseKerasCallback(tag='my fancy convnet 1') et vous voilà prêt (voir https://docs.losswise.com/#keras-plugin ) .

1
nicodjimenez

Si vous utilisez google-colab, une simple visualisation du graphique serait:

import tensorboardcolab as tb

tbc = tb.TensorBoardColab()
tensorboard = tb.TensorBoardColabCallback(tbc)


history = model.fit(x_train,# Features
                    y_train, # Target vector
                    batch_size=batch_size, # Number of observations per batch
                    epochs=epochs, # Number of epochs
                    callbacks=[early_stopping, tensorboard], # Early stopping
                    verbose=1, # Print description after each Epoch
                    validation_split=0.2, #used for validation set every each Epoch
                    validation_data=(x_test, y_test)) # Test data-set to evaluate the model in the end of training
1
DINA TAKLIT

Vous avez écrit log_dir='/Graph' vouliez-vous dire plutôt ./Graph? Vous l'avez envoyé à /home/user/Graph pour le moment.

1
Part

Créez le rappel Tensorboard:

from keras.callbacks import TensorBoard
from datetime import datetime
logDir = "./Graph/" + datetime.now().strftime("%Y%m%d-%H%M%S") + "/"
tb = TensorBoard(log_dir=logDir, histogram_freq=2, write_graph=True, write_images=True, write_grads=True)

Passez le rappel Tensorboard à l’appel approprié:

history = model.fit(X_train, y_train, epochs=200, callbacks=[tb])

Lors de l’exécution du modèle, si vous obtenez une erreur Keras de

"Vous devez saisir une valeur pour le tenseur d'espace réservé"

essayez de réinitialiser la session Keras avant la création du modèle en procédant comme suit:

import keras.backend as K
K.clear_session()
0
rsc