我正在上吴安德教授的序列模型课。在这里,我们正在如下构建嵌入层
# 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((无,))
谢谢
答案 0 :(得分:0)
通常,您无需在层上自行调用build()
。
仅当您按照here所述在“层”上书写时,才需要关心它。
build
是必需的方法之一。您可以使用它来定义图层的权重。当您在最终模型上调用model.compile()
时,这将在内部调用每个Layer的build()
方法,并向其传递上一层的输出形状。
因此,注释it is required before setting the weights of the embedding layer
实际上是正确的:为了设置权重,图层需要知道正确的形状,通过调用build()
可以知道该形状。但是,这并不意味着您必须自己致电build()
。您也可以在模型编译后设置权重。
因此,总而言之,除非您的代码做任何花哨的事(我不知道,因为您没有进一步发布任何内容),否则对build
的调用已过时。