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

Keras Visualization of Model Built from Functional API

我想问一下是否有一种简单的方法可以可视化从函数构建的 Keras 模型API?

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

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

print(model.summary())
SVG(model_to_dot(model).create(prog='dot', format='svg'))

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

是的,尝试检查 keras.utils,它有一个方法 plot_model(),详细说明 here。似乎您已经熟悉 keras.utils.vis_utilsmodel_to_dot 方法,但这是另一种选择。它的用法是这样的:

from keras.utils import plot_model
plot_model(model, to_file='model.png')

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


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

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)

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

tensorboard --logdir=/logs/run1

这将指示您在哪个端口可视化您的训练。如果你有不同的 运行s 你可以传递 --logdir=/logs 而不是能够将它们一起可视化以进行比较。 Tensorboard 的使用当然有更多的选择,所以如果你正在考虑使用它,我建议你检查包含的链接。

经过一些谷歌搜索和 trial/error...结果证明您只需将整个功能 api 模型转换回 "model format"。

model = some_model()
output_layer = _build_output()
finalmodel = Model(inputs=model.input, outputs=finalmodel)

然后,您可以 运行 finalmodel.summary() 或任何用于顺序建模的绘图功能。

但是,我想这需要仔细跟踪模型,我承认我没有这样做。

tf.keras.utils.plot_model(
model,
to_file="model.png",
show_shapes=False,
show_layer_names=True,
rankdir="TB",
expand_nested=False,
dpi=96,
)