如何使用Keras的Tensorboard回调?

Sim*_*one 128 keras tensorboard

我用Keras建立了一个神经网络.我会通过Tensorboard可视化其数据,因此我使用了:

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
                            write_graph=True, write_images=True)
Run Code Online (Sandbox Code Playgroud)

keras.io中所述.当我运行回调时,我得到了<keras.callbacks.TensorBoard at 0x7f9abb3898>,但是我的文件夹"Graph"中没有任何文件.我如何使用这个回调有什么问题吗?

Nas*_*Ben 206

keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,  
          write_graph=True, write_images=True)
Run Code Online (Sandbox Code Playgroud)

此行创建一个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])
Run Code Online (Sandbox Code Playgroud)

这样您就可以将回调对象提供给函数.它将在训练期间运行,并将输出可与tensorboard一起使用的文件.

如果要显示培训期间创建的文件,请在终端中运行

tensorboard --logdir path_to_current_dir/Graph 
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !

  • 尽管可以在“图形”选项卡上看到我的模型架构,但“标量”选项卡仍为空。 (2认同)

Mar*_*oma 42

这是您使用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])
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法更好地构造张量板的输出?Keras在这方面做了一些优化吗? (2认同)
  • @nickpick我不知道你的意思.但我认为这可能是另一个问题的候选人. (2认同)

小智 17

更改

keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,  
          write_graph=True, write_images=True)
Run Code Online (Sandbox Code Playgroud)

tbCallBack = keras.callbacks.TensorBoard(log_dir='Graph', histogram_freq=0,  
          write_graph=True, write_images=True)
Run Code Online (Sandbox Code Playgroud)

并设置你的模型

tbCallback.set_model(model)
Run Code Online (Sandbox Code Playgroud)

在您的终端中运行

tensorboard  --logdir Graph/
Run Code Online (Sandbox Code Playgroud)


小智 14

如果您正在使用Keras库并且想要使用张量板来打印精度和其他变量的图形,那么下面是要遵循的步骤.

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

from keras.callbacks import TensorBoard
Run Code Online (Sandbox Code Playgroud)

第2步:在"model.fit()"命令之前的程序中包含以下命令.

tensor_board = TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
Run Code Online (Sandbox Code Playgroud)

注意:使用"./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])
Run Code Online (Sandbox Code Playgroud)

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

步骤5:在工作目录中打开终端并键入以下命令.

tensorboard --logdir ./Graph
Run Code Online (Sandbox Code Playgroud)

第6步:现在打开您的Web浏览器并输入以下地址.

http://localhost:6006
Run Code Online (Sandbox Code Playgroud)

输入后,Tensorbaord页面将打开,您可以在其中看到不同变量的图形.


Gui*_*ier 7

这是一些代码:

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)
Run Code Online (Sandbox Code Playgroud)

基本上,histogram_freq=2是调用此回调时调整的最重要参数:它设置一个时间间隔来调用回调,目标是在磁盘上生成更少的文件.

所以这里是TensorBoard中在"直方图"选项卡下看到的整个训练中最后一个卷积值的演化的示例可视化(我发现"分布"选项卡包含非常相似的图表,但是侧面翻转):

张量重量监测

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


DIN*_*LIT 5

如果您使用的是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
Run Code Online (Sandbox Code Playgroud)