通过tf.keras
和tf.keras.Layer
通读documentation of implementing custom layers,他们指定了两个要继承的选项tf.keras.Model
和json_data
。
在创建自定义层的背景下,我问自己这两者之间有什么区别?从技术上来说有什么不同?
例如,如果我要实现变压器编码器,哪个更合适? (假设变压器在我的完整模型中只是一个“层”)
答案 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层构建新的模型体系结构,请构建一个自定义模型。
如果要在一个层中实现自己的自定义张量操作,则构建一个自定义层。如果在自定义层中使用非张量运算,则必须编写该层将如何向前传播和向后传播的代码。