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

如何在不降级TensorFlow的情况下修复‘无ConfigProto属性’错误?

这个问题完全是TensorFlow 1.x和2.x的API差异导致的——tf.ConfigProto是TF1里用来配置会话和GPU资源的接口,在TF2里已经被彻底重构移除了,所以直接运行基于TF1编写的RetinaNet训练代码就会触发这个错误。不用降级到TF1.14,这里有两个靠谱的修复方案,你可以根据情况选择:

方案1:升级RetinaNet到支持TF2的版本

如果你用的是主流的keras-retinanet实现,最省心的办法就是升级到适配TF2的最新版本。旧版的keras-retinanet是基于TF1写的,而新版本已经完全兼容TF2,并且移除了所有废弃的API调用。

你可以通过pip直接升级:

pip install --upgrade keras-retinanet

或者从GitHub克隆最新源码安装(如果你需要自定义功能的话):

git clone https://github.com/fizyr/keras-retinanet.git
cd keras-retinanet
pip install .

升级完成后,直接重新运行你的训练命令就可以了,不需要修改任何代码。

方案2:手动修改代码适配TF2

如果不想升级,或者你用的是自己定制的RetinaNet代码,那就需要找到所有使用tf.ConfigProto的地方,替换成TF2的GPU配置逻辑。

  1. 首先定位代码中调用tf.ConfigProto的位置,一般在训练脚本(比如train.py)或者工具类文件里,通常是用来设置GPU内存按需增长的,代码大概长这样:
    config = tf.ConfigProto()
    config.gpu_options.allow_growth = True
    tf.keras.backend.set_session(tf.Session(config=config))
    
  2. 把这段代码替换成TF2的写法:
    # 配置GPU内存按需增长(TF2版本)
    gpus = tf.config.list_physical_devices('GPU')
    if gpus:
        try:
            # 对每个GPU开启内存按需分配
            for gpu in gpus:
                tf.config.experimental.set_memory_growth(gpu, True)
        except RuntimeError as e:
            # 如果配置失败,打印错误信息
            print(e)
    
  3. 另外,如果代码中还有tf.Session、tf.keras.backend.get_session()这类TF1风格的会话操作,直接移除即可——TF2默认使用即时执行模式(Eager Execution),不需要手动创建和管理会话。

修改完成后,重新运行你的训练命令:

retinanet-train --batch-size 4 --steps 349 --epochs 50 --weights logos/resnet50_coco_best_v2.1.0.h5 --snapshot-path logos/snapshots csv logos/retinanet_train.csv logos/retinanet_classes.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:49:06