我正在看advanced Keras tutorial on the tensorflow website,而对Bahdanau注意的实现感到有些困惑:
class BahdanauAttention(tf.keras.Model):
...
因此,似乎他们正在将其实现为Model
。但是,它本身并不是一个完整的,有用的模型-它只是正在优化的较大Model
(在当前情况下为解码器)的一部分。以后用作
attention_layer = BahdanauAttention(10)
强调了一个事实,即它可以看作只是Model
的一层。
实际上,一旦人们意识到一个模型可以作为另一个模型的一部分来重用,Model
和Layer
之间的边界就会变得有点模糊。
我的问题是
在Keras中,Layer
和Model
之间有什么区别,
何时将层实现为Layer
,而不是总是将新层实现为Model
。
答案 0 :(得分:0)
我认为您有点困惑。从功能上讲,层和模型完全不同,我不明白为什么需要对它们进行比较。换句话说,模型通常是图层的集合。您有责任将它们添加到模型中并进行连接。它们可以以各种复杂的方式连接。当然,您可以创建一个只有一层的模型,但这取决于您使用的模型。
关于第二个问题,确实没有关于何时执行操作的指南。通常,您会尝试用尽所有选项,直到找到最合适的选项。链接模型以及在模型之间共享图层可能是决定是否只需要一个简单图层或将其插入模型的决定因素。