如何使用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

Interesting Posts