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

Python3.7使用Keras Dropout时UnboundLocalError的解决方法

解决Keras Dropout在Python3.7中的UnboundLocalError错误

我之前碰到过一模一样的问题,不用降级Python3.6就能搞定,这个错误的根源是numpy 1.16.x版本与Python3.7存在兼容性bug——具体是np.asscalar()函数的实现有问题,Keras调用TensorFlow时会间接触发这个函数,添加Dropout层刚好命中了这个代码路径,所以移除Dropout就正常运行了。

具体解决步骤:

  1. 升级或降级numpy版本
    这个bug在numpy 1.15.4(旧版本修复)和1.17.0及以上版本(新版本修复)中都已解决,你可以二选一:

    • 升级到最新兼容版本:
      pip install numpy>=1.17.0 --upgrade
      
    • 或者降级到稳定的旧版本:
      pip install numpy==1.15.4
      
  2. 验证numpy版本
    打开Python终端,输入以下命令确认版本是否正确:

    import numpy
    print(numpy.__version__)
    

    确保输出是1.15.4或者1.17.0及以上。

  3. 重新运行代码
    现在再执行你的Keras模型代码,Dropout层应该能正常工作,不会再出现UnboundLocalError了。

临时替代方案(不推荐):

如果你暂时不想改动numpy版本,可以在创建Dropout层时显式指定training=False,但这样Dropout在训练过程中不会生效,仅适合临时测试:

model.add(Dropout(0.2, training=False))

优先推荐修复numpy版本的方案,这是最彻底的解决方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:20:49