使用CapsNet训练模型出现ValueError: Could not interpret initializer identifier: 0.5报错求助
报错根因
该报错和dropout ratio取值本身无关,是参数传递位置错误导致的:
- 报错堆栈指向Embedding层初始化逻辑,你将浮点数值
0.5错误传递给了embeddings_initializer参数。该参数只接收Keras初始化器实例、初始化器名称字符串等合法标识符,不接收数值类的dropout比例参数,因此抛出值错误。
修复步骤
- 打开
codes/models/text_layer.py文件,定位到第134行的Embedding层定义代码 - 核对参数传递规则:Keras Embedding层的前三个参数依次为
input_dim(词表大小)、output_dim(嵌入维度)、embeddings_initializer(嵌入矩阵初始化器),你需要确认自己传入的参数是否存在顺序错位错误写法示例:
# 未指定参数名,0.5被传给第三个参数embeddings_initializer embedding = layers.Embedding(self.vocab_size, self.embedding_size, 0.5)正确写法示例:
# 显式指定dropout参数名,避免参数错位 embedding = layers.Embedding(self.vocab_size, self.embedding_size, dropout=0.5) - 如果你要配置的是独立Dropout层的比例,直接将
0.5传入Dropout层的构造函数即可,不要写到Embedding层的参数列表中
效果验证
修改完成后重新启动训练,只要embeddings_initializer参数接收到合法值,即可解决该报错。
内容的提问来源于stack exchange,提问作者Maria04
相关产品推荐
相关产品推荐

