我与Keras建立了一个神经网络。我会通过Tensorboard可视化其数据,因此我使用了:
keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0,
write_graph=True, write_images=True)
如keras.io中所述。当我运行回调时,我得到<keras.callbacks.TensorBoard at 0x7f9abb3898>
,但我的文件夹“Graph”中没有任何文件。我如何使用这个回调有什么问题吗?
答案 0 :(得分:196)
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一起使用的文件。
如果要显示培训期间创建的文件,请在终端中运行
tensorboard --logdir path_to_current_dir/Graph
希望这有帮助!
答案 1 :(得分:41)
这是您使用TensorBoard callback:
的方式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])
答案 2 :(得分:17)
更改
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/
答案 3 :(得分:14)
如果您正在使用Keras库并希望使用张量板来打印精度和其他变量的图形,那么下面是要遵循的步骤。
步骤1:使用以下命令
初始化keras回调库以导入tensorboardfrom 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:在工作目录中打开终端并输入以下命令。
tensorboard --logdir ./Graph
第6步:现在打开网络浏览器并输入以下地址。
http://localhost:6006
输入后,Tensorbaord页面将打开,您可以在其中看到不同变量的图形。
答案 4 :(得分:6)
以下是一些代码:
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中的最后一次卷积的值演变的示例可视化,在&#34;直方图&#34;选项卡(我发现&#34;发行版&#34;标签包含非常相似的图表,但侧面翻转):
如果您想在上下文中查看完整示例,可以参考此开源项目:https://github.com/Vooban/Hyperopt-Keras-CNN-CIFAR-100
答案 5 :(得分:1)
你写了log_dir='/Graph'
你的意思是./Graph
吗?您目前已将其发送至/home/user/Graph
。
答案 6 :(得分:1)
你应该查看Losswise(https://losswise.com),它有一个Keras插件,比Tensorboard更容易使用,并有一些很好的额外功能。使用Losswise时,您只需使用from losswise.libs import LosswiseKerasCallback
然后使用callback = LosswiseKerasCallback(tag='my fancy convnet 1')
即可开始使用(请参阅https://docs.losswise.com/#keras-plugin)。
答案 7 :(得分:1)
几乎没有。
首先,不是/Graph
而是./Graph
其次,当你使用TensorBoard回调时,总是传递验证数据,因为没有它,它就不会启动。
第三,如果你想使用除标量摘要之外的任何东西,那么你应该只使用fit
方法,因为fit_generator
将不起作用。或者您可以重写回调以使用fit_generator
。
要添加回调,只需将其添加到model.fit(..., callbacks=your_list_of_callbacks)
答案 8 :(得分:0)
创建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()
答案 9 :(得分:0)
如果您使用的是 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