部分安卓端ncnn模型推理输出数据存在大量-nan和nan的问题

原文issue链接:部分安卓端ncnn模型推理输出数据存在大量-nan的问题 · Issue #3607 · Tencent/ncnn (github.com)

问题描述

        onnx、ncnn模型在pc端推理输出结果正确且基本一致,在部分安卓设备上使用同一模型和输入的推理输出数据正常,另一部分安卓端设备上存在大量-nan数值,且推理结果错误。

编译&运行环境

ncnn版本库:预编译库 20220216
PC端运行环境:Ubuntu 18.04 Intel Core i7 9700
Android端出现问题的运行环境:
1、Android 10.0 展锐 uis8581e
2、Android 11.0 高通 Snapdragon 855Plus
3、Harmony 2.0 麒麟 Kirin 980

解决方案

        中间层累加可能有fp16溢出问题,对于累加有溢出的层强制用 fp32 计算,在加载后,重新用 fp32 性质初始化该层。(ncnn作者nihui的回复)或者直接像下面这样设置fp16计算。

net.opt.use_fp16_storage = false;
net.opt.use_fp16_arithmetic = false;

        当net.opt.use_fp16_storage设置为false时,模型中的参数以及中间计算结果将会以浮点数的32位精度(即float32)进行存储。同样,当net.opt.use_fp16_arithmetic设置为false时,模型的计算也会以float32精度进行。默认情况下,这两个选项的值都为false,即使用float32精度。 

启示

        对于不同设备端如果在ncnn正确安装和能正常使用后(即推理代码正常编译和运行),如果推理结果不一致,那么就要考虑溢出的问题,一般来说对于fp16的模型加上上述两句,进行fp32推理是可以解决问题的。(至少我解决了一部分问题)。通过安卓端这个问题,也可以引申到其他如linux设备端推理类似问题的解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis报错-CROSSSLOT keys in request don‘t hash in the same slot

背景 问题涉及:spring security、spring session、redis 问题描述 springbootspringsecurityspringsessionantd 登录功能的时候,在源码中使用到了redis的rename命令(如下图所示) 在这里就会报错 CROSSSLOT keys in request d…

基于小波哈尔法(WHM)的一维非线性IVP测试问题的求解(Matlab代码实现)

💥1 概述 小波哈尔法(WHM)是一种求解一维非线性初值问题(IVP)的数值方法。它基于小波分析的思想,通过将原始问题转化为小波空间中的线性问题,然后进行求解。以下是一维非线性IVP测试问题的求解…

MacOS 便笺Stickies数据恢复

在MacOS上,如果便笺数据丢了: 1、可以去时间机器备份的以下目录寻找,之前所有的便笺,都以rtfd文件的形式存在这下面。 最新备份/用户/Frank(这里是你的用户名)/Library/Containers/com.apple.Stickies/Data/Library/Stickies 2…

守护数智未来,开源网安受邀参加2023OWASP北京论坛

2023年7月14日,OWASP中国与网安加社区联合举办的“2023OWASP中国北京安全技术论坛”在北京圆满召开,开源网安受邀参加本次论坛并分享“软件供应链安全治理实践”。 本次“2023OWASP中国北京安全技术论坛”是OWASP中国北京地区年度重要活动之一&#xff…

【Hive实战】Hive的事务表

Hive Transactions 在升级到Hive 3之前,需要把在事务表上Major Compaction。主要是为了合并掉增量文件。更准确地说,自上次Major Compaction以来在其上执行过任何更新/删除/合并语句的任何分区都必须进行另一次Major Compaction。在 Hive 升级到 Hive 3 …

Vue+axios 使用CancelToken多次发送请求取消前面所有正在pendding的请求

需求: 项目中 折线图数据是循环调用的,此时勾选一个设备, 会出现多条线。 原因 折线图数据一进来接口循环在调用,勾选设备时,循环调用的接口有的处于pedding状态 ,有的还在加载中,这就导致勾…

【PDFBox】PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档

这篇文章,主要介绍PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档。 目录 一、PDFBox操作文本 1.1、读取所有页面文本内容 1.2、读取指定页面文本内容 1.3、写入文本内容 1.4、替换文本内容 (1&#xf…

如何在 Endless OS 上安装 ONLYOFFICE 桌面编辑器

ONLYOFFICE 桌面编辑器是一款基于依据 AGPL v.3 许可进行分发的开源办公套件。使用这款应用,您无需保持网络连接状态即可处理存储在计算机上的文档。本指南会向您介绍,如何在 Endless OS 上安装 ONLYOFFICE 桌面编辑器。 ONLYOFFICE 桌面版是什么 ONLYO…

Spring Boot进阶(55):SpringBoot之集成MongoDB及实战使用 | 超级详细,建议收藏

1. 前言🔥 前几期我们有介绍Mysql、Redis等数据库介绍及实战演示,对基本的数据存放有很好的共性,但是如果说遇到大面积的xml、Json、bson等格式文档数据存放,以上数据库并非是最优选择,最优选择是Mongodb数据库。 那么…

如何将jar 包下载到自定义maven仓库

下载命令 mvn install:install-file -Dfileartifactid-version.jar -DgroupIdgroupid -DartifactIdartifactid -Dversionversion -Dpackagingjar -DlocalRepositoryPath. -DcreateChecksumtrue参数解释 在上述命令中,需要替换以下参数: artifactid-vers…

HTTP原理解析-超详细

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

《刷题2》场景模拟

目录 1. C语言部分 1.1. 关键字static有什么用途? 1.2. 如何引用一个已经定义过的全局变量? 1.3. 设有以下说明和定义: 1.4. 写出float x 与“零值”比较的if语句 1.5. 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C中应用什么实现? 1.6. 什么是…

vue3+vue-router4:报错Uncaught (in promise) Error: Invalid navigation guard

报错图示: Error: Invalid navigation guard Uncaught (in promise) Error: Invalid navigation guard 错误影响描述: 配置开发、测试、生产时候,因为是公众号,所以想在开发环境下免鉴权,不走微信获取openid接口&a…

potplayer放大画面,画面拖拽。备份

放大画面: 按住alt和鼠标左键,就可以拖动放大后的画面了 窗口化示图

Alluxio初见

Alluxio学习指南 在当今的大数据时代,数据处理和存储的需求变得越来越庞大和复杂。为了解决这些挑战,Alluxio作为一个开源分布式虚拟文件系统应运而生。本篇博客将向您介绍Alluxio的基本概念、架构和使用方法,帮助您更好地理解和应用Alluxio。 Alluxio是什么? Alluxio是…

【DC-DC】APS54083 降压恒流驱动器大功率深度调光 舞台 RGB 汽车照明 台灯驱动芯片

产品描述 APS54083 是一款 PWM 工作模式,高效率、外围简单、外置功率 MOS 管,适用于 5-220V 输入高精度降压 LED 恒流驱动芯片。输出最大功率150W最大电流 6A。APS54083 可实现线性调光和 PWM 调光,线性调光脚有效电压范围 0.5-2.5V.PWM 调光频率范围 1…

学习babylon.js --- [3] 开启https

babylonjs提供WebVR功能,但是使用这个功能得用https,本文讲述如何使用自签名证书来开启https,基于第二篇文章中搭建的工程。 一 生成自签名证书 首先要安装openssl,这个去网上搜下就行了。安装完之后在终端下输入openssl回车可以…

MongoDB

MongoDB概述 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它支持的数据结构非…

状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

从今天起,我们开始学习状态模式。在实际的软件开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。从这一点上来看,它有点像我们之前讲到的组合模式。 可以简短的回顾一下组合模式&#xff1a…

题解 | #牛群排列去重#

题解 | #牛群排列去重# 知识点:链表,遍历 思路:遍历,遇到重复记录节点,继续寻找到下一个界点,需要注意一点是小心最后的节点为null,入门题不多说import java.uti 国电南自提前批2024 面试快一个月了&…