如何使用TensorBoard可视化具有自定义模型子类的keras模型?

我有一个模型,该模型由几个继承自tf.keras.Model的子模型组成。这些子模型或多或少都是由keras.Sequential模型组成的keras.layers模型的集合,例如keras.layers.Conv2Dkeras.layers.BatchNormalization等。调用函数传递数据通过不同的顺序模型(有时会在顺序模型的输出中添加额外的东西,例如原始输入,例如ResidualBlock子模型)。

我的主模型包含子模型的原因是因为主模型很复杂,这样做使我可以轻松更改模型体系结构(例如子模型A的层数)。此外,部分子模型会实例化某些层(例如keras.layers.Reshape) in the调用function because the argument to configure the Reshape`取决于调用函数的输入。

该模型编译成功,并且我已经通过它传递了随机数据(尚未对其进行训练),但是我想对其进行可视化。

我尝试执行以下操作

tensorboard = TensorBoard(log_dir='./logs/{}'.format(time()))
tensorboard.set_model(model)

但我收到警告:
WARNING:tensorflow:Model failed to serialize as JSON. Ignoring...

我也不能用它保存
model.save('path_to_file.h5')
因为我收到了'NotImplemnedError。

研究之后,我发现保存自定义模型的推荐方法是仅保存权重并仅加载权重。

如何使用Tensorboard可视化我的模型?我需要实现串行器吗?有指导吗?

a793358269 回答:如何使用TensorBoard可视化具有自定义模型子类的keras模型?

就使用Keras API的Tensorboard而言,您可能不走运,因为它并非设计用于在具有自定义功能的嵌套模型上运行。好消息是,链接的源代码不难理解,实际上对我来说比官方指南要直观得多-因此,您应该能够编写自己的tensorboard类来满足您的需求。

与自定义类相比,任何形式的嵌套回调形式的“变通办法”都会比自定义类更麻烦和更难以管理-因此尽管后者可能最初涉及更多工作,但从长远来看应该会有所收获。

最后,Tensorboard API的可定制性受到限制-例如无法选择要记录的特定图层或要忽略的指标。为此,我编写了自己的课程-请参见下面的摘录;它不支持嵌套模型,但是可以轻松地扩展嵌套模型。

\b
本文链接:https://www.f2er.com/3069588.html

大家都在问