Caffe框架GPU与MLU计算结果不一致请问如何调试?

某一检测模型移植到Cambricon Caffe上时,发现无法检测出结果,于是将GPU和MLU的运行结果输出并保存后进行对比,发现二者计算结果不一致,如下图所示:

第一张为GPU模式下,第二张为GPU模式,二者使用的输入和数据预处理方式均完全一样,该输出为网络第一层卷积的部分输出。

用Cambricon Caffe提供的test_forward工具验证该模型在CPU和MLU模式下的输入,结果仍不一致,如下图所示:

第一张为MLU模式下的输出,第二张CPU模式下的输出。

请问这种情况下如何调试具体哪里出现了问题?

在GPU模式下ROIPooling层的输出结果为:

在MLU模式下运行,结果为:

最后在CPU模式下使用ROIPooling算子,计算结果为:

对比CPU和GPU的运算结果可知,仅处理了第一个ROI,修改了ROIPooling层部分代码才能得到正确结果。而MLU模式下的ROIPooling层的结果是完全错误的。

首先在GPU上使网络输出Proposal层的运算结果,如下:

使用Proposal算子在CPU模式下运行的结果为:

MLU模式下的结果为:

将Proposal层替换为Python的Proposal层,在CPU模式下的运算结果为:

与GPU计算结果是一致的,所以认为Proposal算子有问题。

MLU100上的数据格式为FP16/INT8, 运算结果不一致是合理的,具体正确性要看误差,可以用MAPE度量一下误差,一般FP16不会超过%1。另外如果是faster-rcnn网络,不要直接比较proposal层之后的结果,只能直接比较proposal层前的结果。proposal层之后的结果因为涉及到bbox,无法直接比较,可以用IOU之类的方法比较。最后MLUfaster-rcnn的输出结果layout和CPU的输出结果layout不同,因此两者的后处理方式是不一致的,具体可以参考我司提供的后处理示例。

重新对比了一下GPU与MLU的输出结果,Proposal层之前的处理结果是正确的,但是MLU的Proposal和ROIPooling层有问题。在输入特征相同的情况下,使用FasterRCNN的Proposal层和MLU的Proposal层得到的结果是不一致的;使用FasterRCNN的Proposal层得到正确的ROI后,输入到ROIPooling层只处理了第一个ROI,我修改了CPU版本的ROIPooling层才可以得到正确的结果。

MLU100上的数据格式为FP16/INT8, 运算结果不一致是合理的,具体正确性要看误差,可以用MAPE度量一下误差,一般FP16不会超过%1。另外如果是faster-rcnn网络,不要直接比较proposal层之后的结果,只能直接比较proposal层前的结果。proposal层之后的结果因为涉及到bbox,无法直接比较,可以用IOU之类的方法比较。最后MLUfaster-rcnn的输出结果layout和CPU的输出结果layout不同,因此两者的后处理方式是不一致的,具体可以参考我司提供的后处理示例。

Caffe框架GPU与MLU计算结果不一致请问如何调试?的更多相关文章

  1. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  2. Caffe框架下的图像回归测试

    Caffe框架下的图像回归测试 参考资料: 1. http://stackoverflow.com/questions/33766689/caffe-hdf5-pre-processing 2. ht ...

  3. Caffe框架,了解三个文件

    不知道从什么时候开始,Deep Learning成为了各个领域研究的热点,也不知道从什么时候开始,2015CVPR的文章出现了很多Deep Learning的文章,更不知道从什么时候开始,三维重建各个 ...

  4. Caffe使用step by step:caffe框架下的基本操作和分析

    caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需 ...

  5. 安装caffe框架所需文件

    安装caffe框架所需文件: 1.微软提供的快速卷积神经网络框架caffe-master安装包或者windows提供的caffe-windows安装包. 链接:http://pan.baidu.com ...

  6. caffe框架下目标检测——faster-rcnn实战篇操作

    原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1) ...

  7. 转 Yolov3转化Caffe框架详解

    转自https://blog.csdn.net/watermelon1123/article/details/82083522 前些日子因工程需求,需要将yolov3从基于darknet转化为基于Ca ...

  8. 【神经网络与深度学习】Caffe使用step by step:caffe框架下的基本操作和分析

    caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需 ...

  9. Caffe框架,图像数据转换成LMDB数据格式

    小码农最近在研究深度学习,对所学知识做点记录,以供以后翻阅.在Caffe框架中,数据的格式都是LMDB的,如何将图像数据转换成这个格式呢? 首先,将图像数据和标签生成txt文档,执行一下代码: fin ...

随机推荐

  1. hdu3234 带权并查集(XOR)

    题意:       给你n个未知的正整数,有三总操作       I P V            P的值是V       I P Q V          P XOR Q = V       Q K ...

  2. POJ2406 KMP前缀周期

    题意:       给你一个字符串,长度小于1百万,问你他最多可以拆成集合相同字符串,例如abcabcabc 可以拆成3个abc,所以输出3. 思路:       这个是比较常规的next应用,首先假 ...

  3. android CVE

    本文收集网上android cve的一些分析供后续学习: Android uncovers master-key:android1.6-4.0 由于ZIP格式允许存在两个或以上完全相同的路径,而安卓系 ...

  4. Winrar漏洞复现(CVE-2018-20250)

    本文讲的是Winrar漏洞利用脚本的使用方法,至于Winrar漏洞的原理,请移步--> Winrar目录穿越漏洞复现 本次利用脚本出处--> https://github.com/back ...

  5. 本地计算机上的Apple Mobile Device服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止

    解决办法:1.开始--运行--regedit.exe,打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Wi ...

  6. (ML邹博)回归

    目录 线性回归 高斯分布 最大似然估计 最小二乘法的本质 Logistic回归 工具 梯度下降算法 最大似然估计 线性回归 对于单个变量: y=ax+b 对于多个变量: 使用极大似然估计解释最小二乘法 ...

  7. Java常见异常类型

    在Java学习过程中,我们会碰到各种各样的异常,现将面试过程中遇到的常见异常做一罗列并举例: 1.NullPointerException: 空指针异常.菜鸟编程经验发现这个异常是经常会发生的,属于运 ...

  8. 全套office版本安装教程及下载地址

    1:office 2003 安装教程及下载地址 https://mp.weixin.qq.com/s/HHGFdiLgL-xhDAAlox2axw 2:office 2007 安装教程及下载地址 ht ...

  9. Django(2)python虚拟环境virtualenvwrapper

    python虚拟环境 虚拟环境(virtual environment),它是一个虚拟化,从电脑独立开辟出来的环境.通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西 ...

  10. 是时候学习Linux了

    前言: Linux是一个开源.免费的操作系统.其稳定性.安全性.处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上.如果你还不太了解Linux,希望本篇文章能够带你 ...