读通过实现定制层文件用tf.keras
,它们指定了两个选项来继承,tf.keras.Layer
和tf.keras.Model
。
在创建自定义图层的背景下,我想问自己这两者之间有什么区别?从技术上来说有什么不同?
例如,如果我要实现变压器编码器,哪个更合适?(假设变压器在我的完整模型中只是一个“层”)
在文档中:
Model类与Layer具有相同的API,但有以下区别:-它公开了内置的训练,评估和预测循环(model.fit(),model.evaluate(),model.predict())。-通过model.layers属性公开其内层的列表。-它公开了保存和序列化API。
实际上,“ Layer”类对应于我们在文献中称为“层”(例如在“卷积层”或“循环层”中)或“块”(例如在“ ResNet块”或“ Inception”中)的类块”)。
同时,“模型”类别对应于文献中称为“模型”(例如在“深度学习模型”中)或“网络”(例如在“深度神经网络”中)的类。
因此,如果您希望能够在这些块上调用.fit()
,.evaluate()
或.predict()
,或者希望能够分别保存和加载这些块,或者应该使用Model类。Layer类更精简,因此您不会使用不必要的功能来夸大图层……但是我想这通常不会是一个大问题。