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

Tensorflow报AttributeError:'NoneType'对象无'keys'属性求助

解决TensorFlow运行retrain.py时出现'NoneType' object has no attribute 'keys'的问题

我之前在做图像分类项目时也碰到过一模一样的报错,结合你的环境(Windows10 64位+Anaconda2 Python3.5)和操作流程,大概率是下面几个原因导致的,咱们一步步来排查解决:

一、数据集路径或结构不符合要求

retrain.py对数据集的文件夹结构有严格要求:每个类别必须对应一个独立的子文件夹,所有同类别图片放在该子文件夹下,比如正确的结构应该是这样:

my_images/
├── roses/
│   ├── rose_01.jpg
│   ├── rose_02.jpg
│   └── ...
├── sunflowers/
│   ├── sunflower_01.jpg
│   └── ...
└── daisies/
    └── ...

解决措施:

  • 检查你运行retrain.py时指定的--image_dir参数路径是否正确:Windows下路径要注意用反斜杠\(或者转义后的双反斜杠\\),也可以用正斜杠/替代,比如--image_dir C:/my_images
  • 确认数据集文件夹里没有空的子文件夹,也不要混入非图片格式的文件(比如文档、压缩包)
  • 如果路径里有空格,记得给路径加上引号,比如--image_dir "C:/My Images"

二、TensorFlow版本与retrain.py脚本不兼容

你用的retrain.py是从旧版本TensorFlow仓库下载的,它的API调用逻辑和新版本TensorFlow(比如2.x系列)不兼容,很容易出现变量为None的情况。

解决措施:

  1. 降级TensorFlow到兼容版本:因为你用的是Python3.5,推荐安装TensorFlow 1.15.0(这是1.x系列的最后一个稳定版,完美兼容Python3.5),运行命令:
    pip install tensorflow==1.15.0
    
  2. 修改retrain.py代码适配新版本:如果不想降级,可以找到报错的代码行(通常是获取分类标签的部分),先判断变量是否为None再调用keys()方法,比如把:
    labels = sorted(label_dict.keys())
    
    修改为:
    if label_dict is not None:
        labels = sorted(label_dict.keys())
    else:
        raise ValueError("未找到有效分类标签,请检查数据集路径")
    

三、Anaconda环境依赖冲突

你安装的基础包版本比较旧(比如certifi是2016年的版本),可能和TensorFlow的依赖包产生冲突,导致部分功能无法正常加载。

解决措施:

  • 先升级pip到最新版本:
    python -m pip install --upgrade pip
    
  • 重新安装TensorFlow并强制更新依赖:
    pip install tensorflow==1.15.0 --force-reinstall
    
  • 最稳妥的方式是创建一个全新的Anaconda环境隔离冲突:
    conda create -n tf_image_classify python=3.5
    conda activate tf_image_classify
    pip install tensorflow==1.15.0
    
    在这个干净的环境里运行retrain.py,大概率能解决问题

额外排查技巧

运行retrain.py时加上--verbose参数,能输出更详细的日志信息,帮你定位到底是加载数据集时出错,还是模型初始化时出了问题,比如:

python retrain.py --image_dir C:/my_images --verbose

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:45:03