Подтвердить что ты не робот

Как использовать обратный вызов Tensorboard Keras?

Я построил нейронную сеть с Keras. Я бы визуализировал его данные Tensorboard, поэтому я использовал:

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

как объяснено в keras.io. Когда я запускаю обратный вызов, я получаю <keras.callbacks.TensorBoard at 0x7f9abb3898>, но я не получаю никакого файла в моей папке "График". Что-то не так в том, как я использовал этот обратный вызов?

4b9b3361

Ответ 1

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

Эта строка создает объект обратного вызова Tensorboard, вы должны захватить этот объект и передать его fit функции модели.

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

Таким образом, вы передали свой объект обратного вызова функции. Он будет запущен во время обучения и выведет файлы, которые можно использовать с тензорной доской.

Если вы хотите визуализировать файлы, созданные во время обучения, запустите в своем терминале

tensorboard --logdir path_to_current_dir/Graph 

Надеюсь это поможет !

Ответ 2

Вот как вы используете обратный вызов 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])

Ответ 3

Измените

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)

и установите свою модель

tbCallback.set_model(model)

Запустите в терминале

tensorboard  --logdir Graph/

Ответ 4

Если вы работаете с библиотекой Keras и хотите использовать тензорную доску для печати графиков точности и других переменных, то ниже приведены шаги, которые необходимо выполнить.

Шаг 1: Инициализируйте библиотеку обратного вызова keras для импорта тензорной доски с помощью команды ниже

from keras.callbacks import TensorBoard

Шаг 2: Включите приведенную ниже команду в вашу программу непосредственно перед командой "model.fit()".

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

Примечание. Используйте "./graph". Он сгенерирует папку graph в вашем текущем рабочем каталоге, избегайте использования "/graph".

Шаг 3: Включить обратный вызов Tensorboard в "model.fit()". Пример приведен ниже.

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

Шаг 4: Запустите ваш код и проверьте, есть ли ваша папка графа в вашем рабочем каталоге. Если приведенные выше коды работают правильно, в вашем рабочем каталоге будет папка "График".

Шаг 5: Откройте Терминал в вашем рабочем каталоге и введите команду ниже.

tensorboard --logdir ./Graph

Шаг 6: Теперь откройте веб-браузер и введите адрес ниже.

http://localhost:6006

После входа откроется страница Tensorbaord, где вы можете увидеть графики различных переменных.

Ответ 5

Вот некоторый код:

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 является наиболее важным параметром для настройки при вызове этого обратного вызова: он устанавливает интервал эпох для обратного вызова с целью создания меньшего количества файлов на дисках.

Итак, вот пример визуализации эволюции значений для последней свертки в процессе обучения, когда-то замеченных в TensorBoard, на вкладке "гистограммы" (и я обнаружил, что вкладка "распределения" содержит очень похожие диаграммы, но перевернутая сбоку):

tensorboard weights monitoring

Если вы хотите увидеть полный пример в контексте, вы можете обратиться к этому проекту с открытым исходным кодом: https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100

Ответ 6

Вы написали log_dir='/Graph', значит, вы имели в виду ./Graph? Вы отправили его на /home/user/Graph в данный момент.

Ответ 7

Вы должны проверить Losswise (https://losswise.com), у него есть плагин для Keras, который проще в использовании, чем Tensorboard, и имеет приятный дополнительные возможности. С помощью Losswise вы просто используете from losswise.libs import LosswiseKerasCallback, а затем callback = LosswiseKerasCallback(tag='my fancy convnet 1'), и вам хорошо идти (см. https://docs.losswise.com/#keras-plugin).

Ответ 8

Есть несколько вещей.

Сначала не /Graph, а ./Graph

Во-вторых, когда вы используете обратный вызов TensorBoard, всегда отправляйте данные проверки, потому что без него он не запускается.

В-третьих, если вы хотите использовать что-либо, кроме скалярных сводок, то вы должны использовать только метод fit, потому что fit_generator не будет работать. Или вы можете переписать обратный вызов для работы с fit_generator.

Чтобы добавить обратные вызовы, просто добавьте его в model.fit(..., callbacks=your_list_of_callbacks)

Ответ 9

Создайте обратный вызов 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)

Передайте обратный вызов Tensorboard на подходящий вызов:

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

При запуске модели, если вы получаете ошибку Keras

"Вы должны указать значение для тензора-заполнителя"

Попробуйте сбросить сеанс Keras перед созданием модели, выполнив:

import keras.backend as K
K.clear_session()

Ответ 10

Если вы используете google-colab, простая визуализация графика будет выглядеть так:

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