Keras的Tensorboard回调如何使用?

How do I use the Tensorboard callback of 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>,但我的文件夹 "Graph" 中没有任何文件。我使用此回调的方式有问题吗?

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

此行创建一个 Callback 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可以使用的文件

如果您想可视化训练期间创建的文件,运行 在您的终端

tensorboard --logdir path_to_current_dir/Graph 

希望这对您有所帮助!

改变

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/

您写的是 log_dir='/Graph',您是指 ./Graph 吗?您目前已将其发送至 /home/user/Graph

这就是您使用 TensorBoard callback 的方式:

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])

这是一些代码:

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 中 "histograms" 选项卡下看到的整个训练过程中最后一个卷积的值演变的示例可视化(我发现 "distributions" 选项卡包含非常相似的内容图表,但在侧面翻转):

如果您想在上下文中查看完整示例,可以参考这个开源项目:https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100

你应该看看 Losswise (https://losswise.com), it has a plugin for Keras that's easier to use than Tensorboard and has some nice extra features. With Losswise you'd just use from losswise.libs import LosswiseKerasCallback and then callback = LosswiseKerasCallback(tag='my fancy convnet 1') and you're good to go (see https://docs.losswise.com/#keras-plugin)。

东西少

首先,不是/Graph而是./Graph

其次,当您使用 TensorBoard 回调时,请始终传递验证数据,因为没有它,它不会启动。

第三,如果你想使用除标量汇总之外的任何东西,那么你应该只使用 fit 方法,因为 fit_generator 不起作用。或者您可以重写回调以使用 fit_generator.

要添加回调,只需将其添加到model.fit(..., callbacks=your_list_of_callbacks)

如果您正在使用 Keras 库并希望使用 tensorboard 打印精度和其他变量的图表,则以下是要遵循的步骤。

第 1 步:使用以下命令初始化 keras 回调库以导入 tensorboard

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”。

第 3 步:在 "model.fit()" 中包含 Tensorboard 回调。示例如下。

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

第 4 步:运行 您的代码并检查您的图形文件夹是否在您的工作目录中。如果上述代码正常工作,您将获得 "Graph" 工作目录中的文件夹。

第 5 步:在您的工作目录中打开终端并键入以下命令。

tensorboard --logdir ./Graph

第 6 步:现在打开您的网络浏览器并在下面输入地址。

http://localhost:6006

进入后,Tensorbaord 页面将打开,您可以在其中看到不同变量的图表。

创建 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 回调传递给 fit 调用:

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

当运行模型时,如果得到

的Keras错误

"You must feed a value for placeholder tensor"

尝试在创建模型之前重置 Keras 会话,方法是:

import keras.backend as K
K.clear_session()

如果您使用的是 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