如何使用Keras的Tensorboardcallback?
我已经与Kerasbuild立了一个neural network。 我将通过Tensorboard对其数据进行可视化处理,因此我利用了:
keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0, write_graph=True, write_images=True)
正如keras.io所解释的那样 。 当我运行callback时,我得到<keras.callbacks.TensorBoard at 0x7f9abb3898>
,但我没有得到任何文件在我的文件夹“图”。 我如何使用这个callback有什么问题?
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
这一行创build一个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])
这样你给你的callback对象的function。 它将在训练过程中运行,并将输出可与张量板一起使用的文件。
如果您想要显示在培训期间创build的文件,请在terminal中运行
tensorboard --logdir path_to_current_dir/Graph
希望这可以帮助 !
这是你如何使用TensorBoardcallback :
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])
更改
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)
在你的terminal运行
tensorboard --logdir Graph/
你应该检查出Losswise( https://losswise.com ),它有一个Keras的插件比Tensorboard更容易使用,并有一些不错的额外function。 使用Losswise,您只需使用from losswise.libs import LosswiseKerasCallback
,然后使用callback = LosswiseKerasCallback(tag='my fancy convnet 1')
,您就可以使用了(请参阅https://docs.losswise.com/#keras-插件; )。
有几件事情。
首先,不是/Graph
但是./Graph
其次,当你使用TensoarBoardcallback,总是通过validation数据,没有它的原因,它不会启动。
第三,如果你想使用除标量摘要以外的任何东西,那么你应该只使用.fit()
方法,因为.fit_generator()
将不起作用。 或者你可以重写callback来使用fit_generator。
要添加callback,只需将其添加到model.fit(..., callbacks=your_list_of_callbacks)
你写了log_dir='/Graph'
,你的意思是./Graph
而不是? 你现在把它发送到/home/user/Graph
。
这里是一些代码:
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
是调用此callback函数时最重要的参数:它设置一个时间间隔来调用callback函数,目标是在磁盘上生成较less的文件。
所以这里是在TensorBoard中,在“直方图”选项卡下(以及我发现“分布”选项卡包含非常相似的图表,但在侧面翻转)的最后一次卷积的演变的示例可视化:
如果你想在上下文中看到一个完整的例子,你可以参考这个开源项目: https : //github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100