繁体   English   中英

TensorFlow - tf.keras.layers.Layer 与 tf.keras.Model 之间的区别

[英]TensorFlow - Difference between tf.keras.layers.Layer vs tf.keras.Model

tf.keras使用tf.keras实现自定义层文档,他们指定了两个要继承的选项, tf.keras.Layertf.keras.Model

创建自定义图层的背景下,我问自己这两者之间有什么区别? 技术上有什么不同?

例如,如果我要实现变压器编码器,哪个更合适? (假设变压器只是我完整模型中的一个“层”)

在文档中:

Model 类与 Layer 具有相同的 API,但有以下区别: - 它公开了内置的训练、评估和预测循环(model.fit()、model.evaluate()、model.predict())。 - 它通过 model.layers 属性公开其内部层的列表。 - 它公开了保存和序列化 API。

实际上,“层”类对应于我们在文献中所指的“层”(如“卷积层”或“循环层”)或“块”(如“ResNet 块”或“初始层”)堵塞”)。

同时,“模型”类对应于文献中所谓的“模型”(如“深度学习模型”)或“网络”(如“深度神经网络”)。

所以,如果你希望能够调用.fit() .evaluate().predict()上的那些块,或者您希望能够保存并单独加载这些块或东西,你应该使用Model类。 Layer 类更精简,因此您不会使用不必要的功能使图层膨胀……但我想这通常不会是一个大问题。

  • 一个层接受一个张量并给出一个张量,这是一些张量运算的结果
  • 模型是多个层的组合。

如果您正在使用现有的 keras/tf 层构建新的模型架构,则构建自定义模型。

如果您在一个层中实现自己的自定义张量操作,则构建一个自定义层。 如果您在自定义层中使用非张量操作,那么您必须编码该层将如何向前传播和向后传播。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM