Tensorflow.keras的项目组织。应该是一个子类tf.keras.Model吗?

我正在使用Tensorflow 1.14和tf.keras API来构建许多(> 10)的differnet神经网络。 (我也对使用Tensorflow 2回答这个问题感兴趣)。我想知道如何组织我的项目。

我使用tf.keras.estimator.model_to_estimator和Tensorboard将keras模型转换为估计量以进行可视化。我有时也使用model.summary()。我的每个模型都有许多(> 20)超参数,并以三种输入数据中的一种作为输入。有时,我会使用超参数优化,以便在尝试下一组超参数之前,我经常手动删除模型并使用tf.keras.backend.clear_session()

当前,我正在使用将超参数作为参数并返回相应的已编译keras模型以转换为估计量的函数。我使用三种不同的“ Main_Datatype.py”脚本来训练三种不同输入数据类型的模型。所有数据都是从.tfrecord文件加载的,每种数据类型都有一个输入函数,所有将该类型的数据作为输入的估算器都使用该函数。我在Main脚本之间切换模型(即返回模型的函数)。我还有一些构建模块,这些构建模块是多个模型的一部分,为此我使用辅助函数将其返回,并使用Keras功能API将最终结果拼凑在一起。

不同模型之间的细微不兼容开始使我感到困惑,我决定使用类来组织项目。我打算为每个模型创建一个类,以跟踪超参数并正确命名每个模型及其模型目录。但是,我想知道Tensorflow中是否存在建立或推荐的方法。

问题:我应该继承tf.keras.Model的子类,而不是使用函数来构建封装它们的模型或python类吗?子类化keras.Model是否会破坏(或需要大量工作才能启用)我与keras估计器和张量板一起使用的任何功能?我已经看到人们在使用自定义Model类时遇到了许多问题,并且有些不情愿仅仅为了发现它不适合我而投入工作。您还有其他建议来更好地组织我的项目吗?

非常感谢您。

imagin_0707 回答:Tensorflow.keras的项目组织。应该是一个子类tf.keras.Model吗?

仅在绝对需要时才子类化。我个人更喜欢遵循以下执行顺序。如果使用前两个选项无法实现所设计模型的复杂性,那么剩下的唯一选择就是子类化。

  1. tf.keras顺序API
  2. tf.keras功能API
  3. 子类别tf.keras.Model
,

似乎很合理:https://www.tensorflow.org/guide/keras/custom_layers_and_models https://www.tensorflow.org/api_docs/python/tf/keras/Model guide

本文链接:https://www.f2er.com/3169823.html

大家都在问