首页 > 其他分享 >图像预处理的数据精度问题报出的Nan

图像预处理的数据精度问题报出的Nan

时间:2024-04-12 09:22:33浏览次数:27  
标签:bf16 fp32 报出 Nan fp16 预处理 精度 范围

问题描述:git上的一个官方项目,图像预处理操作,使用torch进行处理,包含Resize,ToTensor,Nomalize,处理后的结果输入到trt-fp16精度的模型中,可以正常输出。我对图像预处理进行了修改,使用opencv进行resize,numpy进行totensor,nomalize操作,处理后的结果输出到trt-fp16的模型中,发现输出结果都是Nan。

问题解决:通过数据对比,发现torch处理的结果数据类型是fp32,而numpy处理的结果是fp64(pytorch对于浮点类型默认为float32,而numpy的默认类型是float64),这就是问题的原因,说明fp64输入到trt-fp16中超过了精度表示,因为只有超出精度表示基本才会出现nan,但是不清楚fp64到fp16这个过程发生了什么样的类型转换

关于上面的问题,我们先来说一说精度的问题:

fp32、fp16、bf16分别称为单精度浮点数、半精度浮点数、半精度浮点数,其中fp16是intel提出的,bf16是nvidia提出的,fp16和bf16所占存储空间是fp32的一半。

fp16的动态范围是5.96E−8~ 65504,bf16的动态范围是9.2E−41~3.38E38,fp32的动态范围是1.4E-45 ~ 3.40E38,可以看出bf16的数值范围几乎和fp32的范围一样大,这样可以避免fp16容易上、下溢的问题。但是其损失了精度,因为它有8个指数位、尾数位只有7位,而fp16有5个指数位,10个尾数位(也叫小数位)。所以我们常说的超出精度表示范围有两个情况,一种是超出数值范围,一种是超出精度范围,例如超出小数点位数

标签:bf16,fp32,报出,Nan,fp16,预处理,精度,范围
From: https://www.cnblogs.com/chentiao/p/18130458

相关文章

  • 小熊派BearPi-HM_nano开发笔记及避坑
    小熊派BearPi-HM_nano开发笔记及避坑前排提示:直接使用官方提供的Ubuntu18.04OVF,自己配有诸多问题,PPT未给出详细方案。即使是用虚拟机OVF,也有不少坑,现记录如下:基本配置问题1:Certificateverificationfailed:ThecertificateisNOTtrusted执行sudoaptupdate时提示“Cert......
  • 使用 NANOEDGE.AI 工具完成人体姿态识别应用
    1.简介NanoEdge™AI库是Cartesiam推出的人工智能静态库,它可以帮助客户直接生成可以运行在嵌入式ArmCortex处理器上的.a静态库文件。2021年ST收购Cartesiam,完善了ST在AI领域的生态,大大降低了客户使用STM32开发AI应用的难度。通过使用NanoEdgeAISt......
  • LOJ#6020. 「from CommonAnts」寻找 LCT
    linkofproblem。依旧是非常精妙的做法呢!问了神仙lca才知道怎么做了,目前网上是没有题解的,有的只是一份带注释的代码的英文题解。我的细节实现也是看了这份代码得以补足的。我们定义一些量:原树重心为rt,rt的某个儿子叫做son,son子树内的某个节点为x。首先考虑哪些连通块......
  • P9669 [ICPC2022 Jinan R] DFS Order 2
    P9669[ICPC2022JinanR]DFSOrder2树形dp+回退背包dfs的过程时走到\(u\),如果走进一个子树后要回到\(u\),那么这个子树一定全部遍历了一遍。所以方案数会跟子树遍历的方案数有关,可以预处理。设\(h_u\)表示\(u\)子树的遍历方案,假如\(u\)有\(m\)个儿子,那么有\(h_u=......
  • 基于Golang的Nano游戏服务器框架
    在游戏开发过程中,一个高效的服务器框架是至关重要的。Nano正是这样一个框架,它以Golang为基础,提供了轻量级、高性能的服务器解决方案。下面,我们将深入探讨Nano的设计理念、核心特性以及如何在实战中使用它。Nano框架概述Nano是一个针对游戏服务器的框架,能够帮助开发者快速......
  • NaN
    NaN:代表一个非数字的值Number.NaN判断一个值是否为NaN?isNaN(NaN)Number.isNaN(NaN)x!==xNumber.isNaN()和isNaN()的差别?isNaN:当前值是NaN,或者将其强制转换为数字后是NaN,则返回trueNubmer.isNaN():只当前值是NaN,返回trueTodo:我用Number(1n)不报错呀?用......
  • sklearn之average_precision_score计算返回NaN
    问题描述使用sklearn计算AP时,当label全是负标签时会返回NaN,例如:>>>importnumpyasnp>>>fromsklearn.metricsimportaverage_precision_score>>>average_precision_score(np.array([0,0,0,0,0]),np.array([0.1,0.1,0.1,0.1,0.1]))xxx/lib/pytho......
  • C语言语法最后一个教案-教案21(预处理 · 头文件)
    最近给大家争取到一个深夜福利保证你在深夜手机刷到嘎嘎香~那就是 官方授权大流量卡缺点:月租太便宜 185GB~100分钟通话时长~长期套餐~畅想自由的气息流量自由的同时还拥有超长通话,而且免费领取。名额有限,咱们废话不多说直接上图。感兴趣的家人私我或者直接加微......
  • @行业应用:德国ARIS Nano S-DC 10-03电动执行器
    @行业应用:德国ARISNanoS-DC10-03电动执行器@行业应用:德国ARISNanoS-DC10-03电动执行器@行业应用:德国ARISNanoS-DC10-03电动执行器LinearisN+机电阻尼器执行器LinearisN+将zuixianjin的和用户友好的线性技术与当代设计中的经典驱动技术相结合。带有dryspin......
  • 数据采集技术综合项目实战(协程式网络爬虫+数据预处理+数据可视化)附带详细步骤说明,干货
    数据采集部分:目标网址:https://item.jd.com/100066896338.html#none爬虫思路分析:1.确定采集目标:爬取“苹果15”的评论包括好评、差评、中评以及不同的评论对应的用户名、设备颜色、设备内存大小、版本号、评论发布时间等字段,共3000条以上的评论数目,如下图所示:2.查看评论来......