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

TensorFlow Keras指定He Uniform权重初始化器报错问题咨询

报错原因分析

第一个报错:ValueError: Could not interpret initializer identifier: 0

该报错的核心原因是你当前使用的TensorFlow版本低于2.2版本,早期版本中tf.keras.initializers.he_uniform()的API实现存在缺陷,调用后返回值被识别为数值0而非可调用的初始化器对象,因此层无法识别合法的初始化器配置,抛出对应错误。

第二个报错:module 'tensorflow_core.keras.initializers' has no attribute 'HeUniform'

HeUniform作为类形式的初始化器入口,是TensorFlow 2.2版本才正式加入tf.keras.initializers公开模块的API,低于该版本的TensorFlow没有导出该类,因此会提示模块不存在对应属性。

he_uniform()和HeUniform()的区别

  • 功能完全一致:二者底层逻辑完全相同,都是实现He均匀分布权重初始化的API,生成的权重分布没有任何差异。
  • 调用形式不同:he_uniform()是函数形式的快捷调用入口,HeUniform()是类形式的调用入口,后者支持实例化后自定义参数(比如随机种子seed)复用,使用灵活度更高。
  • 版本兼容性不同:he_uniform()最早在TensorFlow 2.0版本就已加入,但2.2版本前实现存在bug;HeUniform()仅支持TensorFlow 2.2及以上版本。

适配方案

如果不打算升级TensorFlow版本,使用字符串标识符写法即可兼容所有版本,无报错:

Dense(64, input_shape=input_shape, kernel_initializer='he_uniform')

如果需要自定义初始化器参数(比如固定随机种子),可以用通用兼容写法:

# 以设置随机种子为42为例
Dense(64, input_shape=input_shape, kernel_initializer=tf.keras.initializers.get('he_uniform')(seed=42))

如果可以升级环境,将TensorFlow升级到2.2及以上版本后,你提到的两种写法都可以正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:04