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

he_uniform()报错:意外关键字参数'dtype' 求解决方案

问题:运行beam_train_model.py时触发TypeError: he_uniform() got an unexpected keyword argument 'dtype'

完整报错堆栈

(python37) F:\pythonProject>python beam_train_model.py --lidar_training_data
2023-03-29 16:00:44.660104: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2023-03-29 16:00:44.660248: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Traceback (most recent call last):
  File "beam_train_model.py", line 6, in <module>
    from models import Lidar2D
  File "F:\pythonProject\models.py", line 27, in <module>
    layers.Softmax()
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\training\tracking\base.py", line 456, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\engine\sequential.py", line 129, in __init__
    self.add(layer)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\training\tracking\base.py", line 456, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\engine\sequential.py", line 213, in add
    output_tensor = layer(self.outputs[0])
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 897, in __call__
    self._maybe_build(inputs)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\engine\base_layer.py", line 2416, in _maybe_build
    self.build(input_shapes)  # pylint:disable=not-callable
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\layers\convolutional.py", line 163, in build
    previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\ops\variable_scope.py", line 2598, in default_variable_creator
    shape=shape)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\ops\variables.py", line 263, in __call__
    return super(VariableMetaclass, cls).__call__(*args, **kwargs)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py", line 1434, in __init__
    distribute_strategy=distribute_strategy)
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py", line 1567, in _init_from_args
    initial_value() if init_from_fn else initial_value,
  File "D:\ProgramData\Anaconda3\envs\python37\lib\site-packages\tensorflow\python\keras\engine\base_layer_utils.py", line 121, in <lambda>
    init_val = lambda: initializer(shape, dtype=dtype)
TypeError: he_uniform() got an unexpected keyword argument 'dtype'

已尝试更新gym库、将代码中的(dtype=dtype)改为(dtype=None),问题未解决。

解决方案

1. 修复TensorFlow版本不兼容问题

这个报错核心是TensorFlow版本差异:旧版TF(尤其是1.x系列)的he_uniform初始化器不支持dtype参数,而代码或TF内部逻辑在调用时传递了该参数。

  • 先查看当前TF版本:
    pip show tensorflow
    
  • 升级到TF 2.x稳定版本(推荐2.5.0及以上,适配Python3.7):
    pip install tensorflow==2.5.0 --upgrade
    
    若需要GPU支持,安装对应版本的tensorflow-gpu即可。

2. 修改初始化器调用逻辑(不升级TF的情况)

如果无法升级TF,找到代码中使用he_uniform的位置(大概率在models.py的卷积层或全连接层定义中),调整调用方式:

  • 原错误写法示例:
    tf.initializers.he_uniform(dtype=tf.float32)
    
  • 修改为:
    tf.keras.initializers.he_uniform()
    
    并将dtype参数移到层的定义中,比如:
    tf.keras.layers.Conv2D(64, (3,3), kernel_initializer=tf.keras.initializers.he_uniform(), dtype=tf.float32)
    

3. 替换初始化器(临时 workaround)

如果以上方法都无效,可以直接替换成兼容的初始化器,比如使用glorot_uniform:

tf.keras.initializers.glorot_uniform()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:57:02