TensorFlow-tf.keras.layers.Layer与tf.keras.layers..Model之间的差异

时间:2019-03-11 20:14:39

标签: python tensorflow keras

通过tf.kerastf.keras.Layer通读documentation of implementing custom layers,他们指定了两个要继承的选项tf.keras.Modeljson_data

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

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

2 个答案:

答案 0 :(得分:1)

在文档中:

  

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

     

有效地,“图层”类对应于我们在   文学作为“层”(如“卷积层”或“循环   层”)或作为“块”(如“ ResNet块”或“初始块”)。

     

与此同时,“ Model”类对应于   文学作为“模型”(如“深度学习模型”)或   “网络”(如“深度神经网络”中一样)。

因此,如果您希望能够在这些块上调用.fit().evaluate().predict(),或者希望能够分别保存和加载这些块,则应该使用Model类。 Layer类更精简,因此您不会使用不必要的功能来夸大图层……但是我想这通常不会是一个大问题。

答案 1 :(得分:0)

  • 一层吸收张量并给出张量,这是由于 一些张量运算
  • 模型是多层的组成。

如果要使用现有的keras / tf层构建新的模型体系结构,请构建一个自定义模型。

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