nee*_*l g 12 python keras tensorflow
在一些tf. keras教程中,我看到他们像这样实例化了模型类:
model = tf.keras.Sequential()
而在某些地方,他们使用这样的东西:
model = tf.keras.Model(inputs=input, outputs=output)
但在文档中看到,它们确实看起来相同,但我不确定也没有明确提及。两者有何区别?
M.I*_*nat 14
有两个类 API 来定义模型tf. keras。根据文档
Sequential class:按顺序将层的线性堆栈分组为tf. keras.Model.
Model class:Model将层分组为具有训练和推理功能的对象。
模型Sequential是最简单的模型类型,是层的线性堆叠。但使用模型 API 存在一些缺陷sequential,它在某些方面受到限制。我们无法使用此 API 构建复杂的网络,例如多输入或多输出网络。
但是使用Model class,我们可以使用功能 API(也可以使用模型类的子类化)来实例化一个模型,这允许我们创建任意的层图。由此,我们可以获得更大的灵活性并轻松定义模型,其中每一层不仅可以与上一层和下一层连接,还可以与模型中的其他层共享特征信息,例如,类模型ResNet、EfficientNet.
事实上,你能得到的大部分SOTA模型tf.keras.applications基本上都是使用Functional API实现的。然而,在子类化 API 中,我们定义层__init__并在方法中实现模型的前向传递call。
一般来说,所有使用Sequential API的模型定义,都可以在Functional API或Model Subclassing API中实现。在Functional API 或Model Subclassing API 中,我们可以创建在Sequential API 中无法实现的复杂层。如果您想知道选择哪一个,答案是,这完全取决于您的需要。不过,请查看以下博客文章,我们在其中tf. keras通过更多示例讨论了各种模型策略。TensorFlow 2 中的模型子类和自定义训练循环
| 归档时间: |
|
| 查看次数: |
8704 次 |
| 最近记录: |