从函数构建的模型的 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_utils
和 model_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,
)
我想问一下是否有一种简单的方法可以可视化从函数构建的 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_utils
和 model_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,
)