如何使用Keras的Tensorboard回调?

如何使用Keras的Tensorboard回调?,keras,tensorboard,Keras,Tensorboard,我用Keras建立了一个神经网络。我将通过Tensorboard可视化其数据,因此我利用了: keras.callbacks.TensorBoard(log\u dir='/Graph',histogram\u freq=0, write_graph=True,write_images=True) 如中所述。当我运行回调时,我得到,但我的文件夹“Graph”中没有任何文件。我如何使用这个回调有什么问题吗?keras.callbacks.TensorBoard(log\u dir='./Grap

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

keras.callbacks.TensorBoard(log\u dir='/Graph',histogram\u freq=0,
write_graph=True,write_images=True)
如中所述。当我运行回调时,我得到
,但我的文件夹“Graph”中没有任何文件。我如何使用这个回调有什么问题吗?

keras.callbacks.TensorBoard(log\u dir='./Graph',histogram\u freq=0,
write_graph=True,write_images=True)
此行创建了一个回调Tensorboard对象,您应该捕获该对象并将其交给模型的
fit
函数

tbCallBack=keras.callbacks.TensorBoard(log\u dir='./Graph',histogram\u freq=0,write\u Graph=True,write\u images=True)
...
fit(…输入和参数…,回调=[tbCallBack])
通过这种方式,您将回调对象赋给了函数。它将在培训期间运行,并输出可与tensorboard一起使用的文件

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

tensorboard --logdir path_to_current_dir/Graph 
tensorboard  --logdir Graph/
希望这有帮助

变化

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

并设置您的模型

tbCallback.set_model(model)
在你的终点站跑步

tensorboard --logdir path_to_current_dir/Graph 
tensorboard  --logdir Graph/

你写的是
log\u dir='/Graph'
你的意思是
/Graph
?您目前已将其发送到
/home/user/Graph

以下是您如何使用:

从keras.callbacks导入TensorBoard
tensorboard=tensorboard(对数方向='。/对数',直方图频率=0,
写入图形=真,写入图像=假)
#定义模型
模型安装(X_系列、Y_系列、,
批次大小=批次大小,
纪元=nb_纪元,
验证数据=(X检验,Y检验),
洗牌=正确,
回调=[tensorboard])
以下是一些代码:

K.set\u学习阶段(1)
K.设置图像数据格式('channels\u last')
tb_callback=keras.callbacks.TensorBoard(
log\u dir=日志路径,
直方图_freq=2,
write_graph=True
)
tb_回调。设置_模型(模型)
回调=[]
追加(tb\U回调)
#列车网络:
历史=model.fit(
[x_列车],
[y_train,y_train_c],
批量大小=int(炒作空间['batch\u size']),
时代,
洗牌=正确,
verbose=1,
回调=回调,
验证数据=([x_检验],[y_检验,y_检验粗])
).历史
#测试网:
K.设置学习阶段(0)
分数=模型。评估([x_测试],[y_测试,y_测试,粗糙],详细=0)
基本上,
histogram\u freq=2
是调用此回调时要调整的最重要参数:它设置调用回调的时间间隔,目标是在磁盘上生成更少的文件

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


如果您想在上下文中看到完整的示例,您可以参考这个开源项目:

您应该查看Losswise(),它有一个比Tensorboard更易于使用的Keras插件,并且有一些很好的额外功能。有了Losswise,您只需使用Losswise.libs import LosswiseKerasCallback中的
,然后
callback=LosswiseKerasCallback(tag='my fancy convnet 1')
,就可以开始了(请参见)。

几乎没有什么东西

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

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

第三,如果您想使用除标量摘要之外的任何内容,那么您应该只使用
fit
方法,因为
fit\u generator
将不起作用。或者您可以重写回调以使用
fit\u generator


要添加回调,只需将其添加到
model.fit(…,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:运行代码并检查图形文件夹是否在工作目录中。如果上述代码正常工作,您将有“图形” 工作目录中的文件夹

第5步:在您的工作目录中打开Terminal并键入下面的命令

tensorboard --logdir ./Graph
步骤6:现在打开web浏览器并输入以下地址

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错误

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

尝试在创建模型之前重置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

我得到了
AttributeError:“TensorBoard”对象没有属性“set\u model”
。我建议将
直方图频率设置为
1
。直方图\频率:计算模型层激活直方图的频率(以历元为单位)。如果设置为0,则不会计算直方图。注意:“/Graph”在根目录中创建目录,“/Graph”在工作目录中创建目录。@MattKleinsmith如果设置为0,只有模型各层的激活和权重直方图不会通过验证数据、度量进行计算