从函数式 API 构建的模型的 Keras 可视化

ajl*_*123 4 python graph-visualization keras tensorflow

我想问是否有一种简单的方法来可视化从功能 API 构建的 Keras 模型?

目前,对我来说,在高层调试顺序模型的最佳方法是:

model = Sequential()
model.add(...
...

print(model.summary())
SVG(model_to_dot(model).create(prog='dot', format='svg'))
Run Code Online (Sandbox Code Playgroud)

然而,如果我们构建一个更复杂的非顺序模型,我很难找到一种可视化 Keras API 的好方法。

Dar*_*nus 6

是的,有,请尝试检查其中keras.utils的方法plot_model(),详细说明请参见此处。看来您已经熟悉了keras.utils.vis_utilsmodel_to_dot方法,但这是另一种选择。它的用法是这样的:

from keras.utils import plot_model
plot_model(model, to_file='model.png')
Run Code Online (Sandbox Code Playgroud)

老实说,这是我仅使用 Keras 找到的最好的结果。model.summary()像您一样使用有时也很有用。我还希望有一些工具可以更好地可视化模型,甚至可能能够看到每层的权重,以决定最佳的网络结构和初始化(如果您知道一个工具,请告诉:])。


您当前拥有的最佳选择可能是在Tensorboard上可视化内容,您可以通过TensorBoard回调将其包含在 Keras 中。这使您能够可视化您的训练和感兴趣的指标,以及有关层激活、偏差和内核等的一些信息。基本上,您必须在拟合模型之前将此代码添加到您的程序中:

from keras.callbacks import TensorBoard
#indicate folder to save, plus other options
tensorboard = TensorBoard(log_dir='./logs/run1', histogram_freq=1,
    write_graph=True, write_images=False)  

#save it in your callback list, where you can include other callbacks
callbacks_list = [tensorboard]
#then pass to fit as callback, remember to use validation_data also
regressor.fit(X, Y, callbacks=callbacks_list, epochs=64, 
    validation_data=(X_test, Y_test), shuffle=True)
Run Code Online (Sandbox Code Playgroud)

然后,您可以在终端上使用以下命令运行 Tensorboard(在 Web 服务上本地运行):

tensorboard --logdir=/logs/run1
Run Code Online (Sandbox Code Playgroud)

然后,这将指示您在哪个端口可视化您的训练。如果您获得了不同的运行结果,您可以通过--logdir=/logs,以便能够将它们一起可视化以进行比较。当然,关于 Tensorboard 的使用还有更多选项,因此,如果您正在考虑使用它,我建议您查看包含的链接。