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

TensorFlow 2.16.1调用tfds.load赋值变量时出现无意义TypeError

TensorFlow 2.16.1 + tfds.load 赋值变量时触发AtomicFunction.__del__错误解决思路

问题现象

使用TensorFlow 2.16.1和tensorflow_datasets库,执行ds = tfds.load('stl-10')(或其他任意数据集)时,会重复三次抛出如下错误:

Exception ignored in: <function AtomicFunction.del at 0x0000024C114AA160>
Traceback (most recent call last):
File "C:\Users\Toby\AppData\Local\Programs\Python\Python312\Lib\site-packages\tensorflow\python\eager\polymorphic_function\atomic_function.py", line 291, in del
TypeError: 'NoneType' object is not subscriptable
直接执行tfds.load('stl-10')不赋值给变量时无错误,且本地atomic_function.py文件与官方完全一致。

可行解决方案

  • 显式触发垃圾回收
    错误源于对象销毁阶段的空引用问题,可手动调用垃圾回收提前清理无效对象:

    import gc
    ds = tfds.load('stl-10')
    gc.collect()
    
  • 降级TensorFlow版本
    该问题是TensorFlow 2.16.1的已知兼容性bug,降级到2.15.x稳定版本可解决:

    pip install tensorflow==2.15.1 tensorflow-datasets==4.9.4 --force-reinstall
    
  • 指定数据集加载模式
    使用as_supervised=True参数改变返回结构,避免默认字典对象触发异常:

    # 按拆分加载监督式数据集
    ds_train, ds_test = tfds.load('stl-10', split=['train', 'test'], as_supervised=True)
    
  • 切换到非交互式环境运行
    若在Jupyter/IPython中出现问题,尝试在普通Python脚本中执行,交互式环境的变量生命周期管理可能干扰垃圾回收逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:57:27