Как использовать обратный вызов 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>
, но я не получаю никакого файла в моей папке "График". Что-то не так в том, как я использовал этот обратный вызов?
Ответы
Ответ 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