如何使用 Keras 的 Tensorboard 回调?

我已经建立了一个神经网络与克拉斯。我会可视化其数据的 Tensorboard,因此,我已经利用:

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

正如 Kerasio中所解释的。当我运行回调函数时,我得到 <keras.callbacks.TensorBoard at 0x7f9abb3898>,但是在我的文件夹“ Graph”中没有得到任何文件。我使用这次复试的方式有什么问题吗?

126028 次浏览
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 --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的时候。

这就是你如何使用 张量板回调:

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,在“直方图”选项卡(我发现“分布”选项卡包含非常相似的图表,但翻转了侧面) :

tensorboard weights monitoring

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

你应该看看 Losswise (https://losswise.com) ,它有一个 Kera 的插件,比 Tensorboard 更容易使用,还有一些不错的额外功能。有了亏损,你只需要使用 from losswise.libs import LosswiseKerasCallback,然后 callback = LosswiseKerasCallback(tag='my fancy convnet 1'),你是好去(见 https://docs.losswise.com/#keras-plugin)。

有些事情。

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

其次,当您使用 TensorBoard 回调时,总是要传递验证数据,因为没有验证数据,它就不会启动。

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

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

如果你正在 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: 在“ 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])

第四步: 运行代码并检查图形文件夹是否在工作目录中。如果上面的代码工作正常,你将有“图形” 工作目录里的文件夹。

步骤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 回调传递给合适的调用:

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

在运行模型时,如果得到

“必须为占位符张量提供值”

尝试在模型创建之前重置 Kera 会话,方法如下:

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