我想询问是否有一种简单的方法可视化从Functional API构建的Keras模型?
目前,为我调试高级顺序模型的最佳方法是:
model = Sequential()
model.add(...
...
print(model.summary())
SVG(model_to_dot(model).create(prog='dot', format='svg'))
但是,如果我们构建一个更复杂的非顺序模型,我很难找到一种可视化Keras API的好方法。
答案 0 :(得分:4)
是的,请尝试查看keras.utils
,其中包含详细here解释的方法plot_model()
。您似乎已熟悉keras.utils.vis_utils
和model_to_dot
方法,但这是另一种选择。它的用法如下:
from keras.utils import plot_model
plot_model(model, to_file='model.png')
说实话,这是我用Keras唯一找到的最好的。像你一样使用model.summary()
有时也很有用。我还希望有一些工具可以更好地可视化一个模型,甚至可以看到每层的权重,以决定最佳网络结构和初始化(如果你知道一个请告诉:] )。
您目前拥有的最佳选择可能是Tensorboard上的内容可视化,您可以使用TensorBoard Callback在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)
然后,您可以在终端上使用以下命令运行Tensorboard(在Web服务上本地运行):
tensorboard --logdir=/logs/run1
然后,这将指示您在哪个端口可视化您的培训。如果您进行了不同的运行,则可以通过--logdir=/logs
来将它们可视化以进行比较。关于Tensorboard的使用当然有更多的选择,所以如果你考虑使用它,我建议你查看附带的链接。
答案 1 :(得分:1)
经过一些谷歌搜索和试用/错误......结果你必须将整个功能api模型转换回“模型格式”。
model = some_model()
output_layer = _build_output()
finalmodel = Model(inputs=model.input, outputs=finalmodel)
然后,您可以运行finalmodel.summary()或任何用于顺序建模的绘图功能。
然而,这需要我猜测仔细跟踪模型,我承认没有这样做。
答案 2 :(得分:0)
tf.keras.utils.plot_model(
model,
to_file="model.png",
show_shapes=False,
show_layer_names=True,
rankdir="TB",
expand_nested=False,
dpi=96,
)