我正在查看advanced Keras tutorial on the tensorflow website,对于Bahdanau attention的实现我有点困惑:

class BahdanauAttention(tf.keras.Model):
  ...

因此,他们似乎将其实现为Model。然而,它本身并不是一个完整、有用的模型——它只是正在优化的大型Model(本例中是解码器)的一部分。以后用作
attention_layer = BahdanauAttention(10)

它强调了一个事实,即它可以被看作是一层Model
实际上,一旦人们意识到一个模型可以被重用为另一个模型的一部分,aModel和aLayer之间的边界就会变得有点模糊。
所以我的问题是,
路缘石中aLayer和aModel之间的区别是什么
何时将层实现为Layer比较合适,而不是总是将新层实现为Model

最佳答案

我觉得你有点困惑。从功能上讲,一个层和一个模型是完全不同的,我不明白为什么你需要比较它们。换句话说,模型通常是层的集合。将它们添加到模型中并将它们连接起来是您的责任。它们可以以各种复杂的方式连接起来。当然,您可以创建只有一个层的模型,但这取决于您使用它的目的。
至于你的第二个问题,关于什么时候做什么真的没有一个指导方针。通常你会用尽所有的选择,直到找到最有效的方法。在模型之间链接模型和共享层可能是决定是只需要一个简单的层,还是将它插入到模型中的一个决定性因素。

07-24 09:52
查看更多