为什么 Keras Embedding 层会导致摘要中出现“未构建”模型?

问题描述 投票:0回答:1

在我的模型设置中,尽管指定了嵌入层的参数,例如输入维度 (input_dim)、输出维度 (output_dim) 和输入长度 (input_length),但摘要输出表明嵌入层显示为“未构建”。此问题表明该层可能未正确初始化或配置正确的输入形状信息。可能是什么原因导致此问题?如何解决该问题以确保正确构建嵌入层并使用适当的参数将其包含在模型摘要中?

代码:

model = Sequential()
model.add(Embedding(input_dim=vocab_size,output_dim=500,input_length=(2917,)))
model.compile('adam')
model.summary()
我正在研究亚马逊评论数据集词汇大小 = 138203 和输入序列长度 = 2917(填充后) 结果:
Model: "sequential_1" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ ┃ Layer (type)                    ┃ Output Shape           ┃       Param # ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ │ embedding_16 (Embedding)        │ ?                      │   0 (unbuilt) │ └─────────────────────────────────┴────────────────────────┴───────────────┘ Total params: 0 (0.00 B) Trainable params: 0 (0.00 B) Non-trainable params: 0 (0.00 B)

keras deep-learning dataset
1个回答
0
投票

在 karas 中,有时模型不会完全初始化层参数,直到使用输入形状显式构建它们为止。您可以通过使用 model.build(input_shape) 手动构建模型来解决此问题,并指定输入数据的预期形状。

由于您正在使用嵌入,因此您的输入形状将为(batch_size,sequence_length)。在这里,batch_size 通常设置为 None(表示任何批量大小),并且 sequence_length 应与序列的预期输入长度(即每个序列中的标记数量)相匹配。

示例代码示例:

# Build the model explicitly with the input shape

model.build(input_shape=(None, sequence_length))

建议在编译之前先构建模型。

© www.soinside.com 2019 - 2024. All rights reserved.