发现问题:没有非极大值抑制 ValueError: No op named NonMaxSuppressionV3 in defined operations.

本文详细介绍了在TensorFlow上测试预训练PB模型时遇到的版本不匹配错误及其解决方案。错误信息显示为“No op named NonMaxSuppressionV3”,原因是模型训练版本高于当前TensorFlow版本。文章提供了卸载旧版本、安装指定版本TensorFlow及更新numpy的步骤,确保环境与模型版本一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的博客是1.6版本

1 博客1:

https://blog.youkuaiyun.com/u013044310/article/details/88211639

在tensorflow上测试一个训练好的pb模型时报错:
ValueError:No op named NonMaxSuppressionV3 in defined operations.

排查报错原因,最后发现我的pb模型是在tensorflow1.11版本下训练得到的,而加载这个模型的tensorflow版本是1.6,所以需要将原有低版本tf卸载,进行高版本的安装。
当然可以直接用pip安装,但是,为了不影响以前的程序,我用pycharm建立了一个虚拟环境。但是由于总所周知的原因,通过pycharm下载包太慢了,还没有时间研究一下在虚拟环境下用命令行安装包的方法。
于是找了找pycharm中设置国内镜像源下载地址地方法。
pycharm修改pip源为清华源-提高下载速度
设置了清华镜像源之后,速度满分!

而且高版本安装成功之后,程序可以正常运行。

2 博客2

https://www.jianshu.com/p/45e0afd882f2

ubuntu 16.04在tensorflow上测试一个训练好的pb模型时报错:
ValueError:No op named NonMaxSuppressionV3 in defined operations.
原因可能是因为安装的tensorflow版本较低,而调用的pb模型是由更高版本训练得到的,所以需要将原有低版本tf卸载,进行高版本的安装

~$ pip uninstall tensorlflow

出现Proceed(y/n)? 输入y即可
Successfully uninstalled tensorflow-1.7.0

查看是否完全卸载
~$pip list
如果列表里没有tensorflow代表卸载完成

安装高版本
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl

然后就等着吧~

安装完成之后查看版本
~$python

import tensorflow
print(tensorflow.__version__)
1.12.0
exit()

退出即可
高版本安装成功,再试一下之前的程序,就成功了~!

3 解决办法:(fishbox-tensorflow的一个提问者)

https://github.com/TropComplique/FaceBoxes-tensorflow/issues/30

 

安装指定版本tf

https://blog.youkuaiyun.com/ignoreyou/article/details/81079304

更新软件源

sudo apt-get update (有效)

0 我的tf环境是base里面的
为了不影响原来的环境,我用conda 复制了一个环境,请参考博客:conda 激活环境

1、安装pip

    sudo apt-get install python-dev python-pip

2 先卸载原来的tensorflow

3、安装制定版本的tensorflow

    例如安装1.3版本

    sudo pip install tensorflow==1.14 (我参考的这个回答者说的是1.14)

4 又遇到问题:

安装之后无法import tensorflow

Check failed: PyBfloat16_Type.tp_base != nullptr

解决办法1:pip install tf-nightly

https://blog.youkuaiyun.com/sinat_36709248/article/details/88254762

解决办法2:重新安装numpy(此方法有效)

https://blog.youkuaiyun.com/sinat_41898083/article/details/87950214

尝试了网上说的更新numpy的版本,发现已经是更新到最新的版本了。

进入Anaconda Prompt,启动tensorflow:

    activate tensorflow

(我的是source activate facebox)

卸载安装的numpy:

    pip uninstall numpy

使用Spyder运行代码,此时可以发现你仍有相关的numpy版本,
报的还是同样的错(这里可以发现你可能安装了两个numpy,所以会报错)(直接进行下面的)

    RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb ImportError: numpy.core.multiarray failed to import
    ImportError: numpy.core.umath failed to import ImportError:
    numpy.core.umath failed to import

更新现在唯一存在的numpy版本:

python -m pip install --upgrade numpy (有效)

现在再次运行你的程序,发现成功!
然后我运行
import tensorflow
print(tensorflow.__version__)

 

### 处理 `y_true` 只有一个类别的 ROC AUC 计算问题 当使用 `sklearn.metrics.roc_auc_score` 函数计算二分类模型的 ROC AUC 分数时,如果目标变量 `y_true` 中仅存在单一类别,则会抛出 `ValueError` 异常。这是因为 ROC 曲线依赖于两个不同类别的分布情况来评估模型性能。 为了应对这种情况,可以采取以下几种方法: #### 方法一:异常捕获并跳过 通过 Python 的异常处理机制捕捉到此特定类型的错误,并决定是否继续执行其他操作或记录日志信息。 ```python import numpy as np from sklearn.metrics import roc_auc_score y_true = np.array([0, 0, 0]) y_scores = np.array([0.9, 0.8, 0.7]) try: auc_value = roc_auc_score(y_true, y_scores) except ValueError as e: print(f"Warning: {e}") ``` 这种方法简单易行,但在实际应用中可能不够灵活,因为它只是忽略了这个问题没有真正解决问题[^1]。 #### 方法二:增加虚拟样本 向现有数据集中添加少量的人工生成的数据点以确保至少有两个不同的标签值存在于训练集内。这可以通过随机抽样或其他方式实现。 ```python def add_virtual_samples(y_true, n=1): unique_classes = set(y_true) if len(unique_classes) >= 2: return y_true missing_class = (unique_classes ^ {0, 1}).pop() virtual_sample_indices = np.random.choice(len(y_true), size=n) new_y_true = y_true.copy() for idx in virtual_sample_indices: new_y_true[idx] = missing_class return new_y_true augmented_y_true = add_virtual_samples(y_true=y_true, n=1) print(augmented_y_true) ``` 虽然这种方式可以在一定程度上缓解问题,但它可能会引入偏差,影响最终的结果解释性和可靠性[^3]。 #### 方法三:采用替代指标 考虑使用更适合单类别场景下评价模型表现的方法,比如精确率(Precision),召回率(Recall),F1-score 或者平均精度均值(Average Precision Score)。 这些度量标准能够更好地反映模型对于少数类别的预测能力,尤其是在面对极端不平衡的数据集时更为有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值