keras嵌入层构建

时间:2019-07-29 10:50:09

标签: keras time-series

我正在上吴安德教授的序列模型课。在这里,我们正在如下构建嵌入层

 # Define Keras embedding layer with the correct output/input sizes, make it non-trainable. Use Embedding(...). Make sure to set trainable=False.


embedding_layer = Embedding(vocab_len, emb_dim, trainable = False)


    # Build the embedding layer, it is required before setting the weights of the embedding layer. Do not modify the "None".
    embedding_layer.build((None,)) 

我很难理解构建方法。以下功能正添加什么。我找不到构建API。关于此API的参考会有所帮助。

构建嵌入层,这是设置嵌入层权重之前所必需的。不要修改“无”。

embedding_layer.build((无,))

谢谢

1 个答案:

答案 0 :(得分:0)

通常,您无需在层上自行调用build()

仅当您按照here所述在“层”上书写时,才需要关心它。 build是必需的方法之一。您可以使用它来定义图层的权重。当您在最终模型上调用model.compile()时,这将在内部调用每个Layer的build()方法,并向其传递上一层的输出形状。

因此,注释it is required before setting the weights of the embedding layer实际上是正确的:为了设置权重,图层需要知道正确的形状,通过调用build()可以知道该形状。但是,这并不意味着您必须自己致电build()。您也可以在模型编译后设置权重。

因此,总而言之,除非您的代码做任何花哨的事(我不知道,因为您没有进一步发布任何内容),否则对build的调用已过时。