You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras Embedding层在模型summary中显示'unbuilt'的原因及解决方法

Keras Embedding层显示'unbuilt'的原因与解决办法

问题重现

基于亚马逊评论数据集构建模型时,已为Embedding层指定input_dim=138203、output_dim=500、input_length=(2917,),但调用model.summary()后,该层显示为unbuilt,输出形状为?,参数数为0。

核心原因

  1. input_length参数类型错误:传入的input_length=(2917,)是元组类型,但Keras的Embedding层要求input_length为整数,用来指定输入序列的固定长度。错误的参数类型导致层无法正确解析输入形状,进而无法初始化权重参数(Embedding层的参数总数应为input_dim * output_dim,即138203*500=69101500)。
  2. 模型未触发构建流程:仅包含Embedding层的Sequential模型,在未明确输入形状或未连接后续层时,Keras不会自动完成层的构建——因为它需要明确的输入维度来初始化权重。

解决办法

步骤1:修正input_length参数

将input_length=(2917,)改为整数2917,确保参数类型符合要求:

model = Sequential()
# 修正input_length为整数
model.add(Embedding(input_dim=vocab_size, output_dim=500, input_length=2917))

步骤2:触发模型构建(二选一即可)

方式一:手动调用build方法指定输入形状

通过model.build()明确输入的批量维度和序列长度,触发层的初始化:

model.build(input_shape=(None, 2917))  # None表示批量大小可灵活调整
model.compile('adam')
model.summary()

方式二:添加后续层让模型自动推断

在Embedding层后添加任意后续层(如Flatten、Dense等),模型会根据层的连接关系自动推断输入形状并完成构建:

model.add(Flatten())  # 示例:添加Flatten层
model.compile('adam')
model.summary()

修正后的预期输出

Embedding层会显示正确的输出形状(None, 2917, 500),参数数为69101500,不再显示unbuilt。

内容的提问来源于stack exchange,提问作者Ananya Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:48:22