Caffe框架GPU与MLU计算结果不一致请问如何调试?
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计算结果不一致请问如何调试?的更多相关文章
- 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...
- Caffe框架下的图像回归测试
Caffe框架下的图像回归测试 参考资料: 1. http://stackoverflow.com/questions/33766689/caffe-hdf5-pre-processing 2. ht ...
- Caffe框架,了解三个文件
不知道从什么时候开始,Deep Learning成为了各个领域研究的热点,也不知道从什么时候开始,2015CVPR的文章出现了很多Deep Learning的文章,更不知道从什么时候开始,三维重建各个 ...
- Caffe使用step by step:caffe框架下的基本操作和分析
caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需 ...
- 安装caffe框架所需文件
安装caffe框架所需文件: 1.微软提供的快速卷积神经网络框架caffe-master安装包或者windows提供的caffe-windows安装包. 链接:http://pan.baidu.com ...
- caffe框架下目标检测——faster-rcnn实战篇操作
原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1) ...
- 转 Yolov3转化Caffe框架详解
转自https://blog.csdn.net/watermelon1123/article/details/82083522 前些日子因工程需求,需要将yolov3从基于darknet转化为基于Ca ...
- 【神经网络与深度学习】Caffe使用step by step:caffe框架下的基本操作和分析
caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备->模型训练->调参数->合理结果需 ...
- Caffe框架,图像数据转换成LMDB数据格式
小码农最近在研究深度学习,对所学知识做点记录,以供以后翻阅.在Caffe框架中,数据的格式都是LMDB的,如何将图像数据转换成这个格式呢? 首先,将图像数据和标签生成txt文档,执行一下代码: fin ...
随机推荐
- 【Nginx(二)】Nginx目录结构和常用的命令以及核心配置文件
Nginx的目录结构: 默认的安装路径 : /usr/local/nginx 安装完成后,Nginx的目录结构如下: conf: #所有配置文件的目录 nginx.conf #默认的主要配置文件 ...
- Python 使用oslo.vmware管理ESXI虚拟机
oslo.vmware是OpenStack通用框架中的一部分,主要用于实现对虚拟机的管理任务,借助oslo.vmware模块我们可以管理Vmware ESXI集群环境. 读取所有节点主机 from o ...
- 使用EasySYS搭建驱动开发基本框架
提供EasySYS的下载地址:http://bbs.pediy.com/showthread.php?p=956643,看雪上有提供下载,自行百度. EasySYS你能够帮我们快速的搭建驱动的开发框架 ...
- 手动绕过百度加固Debug.isDebuggerConnected反调试的方法
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78237571 1.调用Debug.isDebuggerConnected函数这种反 ...
- 洛谷P1553 数字反转(升级版)
题目简介 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对 ...
- UVA11462年龄排序
题意: 给你200w个人的年龄,年龄的范围是1-100,然后让你从小到大排序输出所有人的年龄,题目还特意强调输入文件限制25MB,题目内存限制2MB. 思路: 比较经典又简单的一 ...
- (2) arm 指令条件码
条件码助记符 标志 含义 EQ Z=1 相等 NE Z=0 不相等 CS/HS C=1 无符号数大于或等于 CC/LO C=0 无符号数小于 MI N=1 负数 PL N=0 正数或0 VS V=1 ...
- 无法编译出.sys文件 寒江孤钓<<windows 内核安全编程>> 学习笔记
系统环境:win7 编译环境:Windows Win7 IA-64 Checked Build Environment 按照书中所说的步骤,出现如下问题 后来直接使用光盘源码,编译成功,于是对照源文件 ...
- 『动善时』JMeter基础 — 12、JMeter取样器详解:sampler
目录 1.取样器介绍 2.JMeter自带的取样器 3."HTTP请求"为例介绍一下取样器 (1)HTTP Request: (2)Web服务器: (3)HTTP请求: (4)同请 ...
- SparkSQL电商用户画像(三)之环境准备
五. 电商用户画像环境搭建 众所周知,Hive的执行任务是将hql语句转化为MapReduce来计算的,Hive的整体解决方案很不错,但是从查询提交到结果返回需要相当长的时间,查询耗时太长.这个主要原 ...