【636】K.sum 与 np.sum 的区别
在计算 语义分割 结果的 metrics 的时候,会通过 K.sum 来计算 TP、FN、FP 的值,从而来计算 Precision、Recall、F1 以及 IOU 的值,不过在计算的过程中,这几个值会出现大于 1 的情况,实际上是计算中出现错误,主要原因就是 K.sum 计算中的一些问题。由于标签数据以图像数据读取,pred 和 true 默认为 'uint8' 类型,对于 K.sum 在计算中会自动调整为这个范围的值,因此永远不会超过255,所以导致结算错误,而 np.sum 则可以直接计算,因此如果用 K.sum,需要提前转换数据类型。
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | >>> a = np.arange( 25 ).reshape(( 5 , 5 )) >>> a array([[ 0 , 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 , 9 ], [ 10 , 11 , 12 , 13 , 14 ], [ 15 , 16 , 17 , 18 , 19 ], [ 20 , 21 , 22 , 23 , 24 ]]) # 对于默认的数据类型,这两个没有区别 >>> K. sum (a) <tf.Tensor: shape = (), dtype = int64, numpy = 300 > >>> np. sum (a) 300 # 将数据类型修改,会导致计算结果不同 >>> a = a.astype( 'uint8' ) >>> K. sum (a) <tf.Tensor: shape = (), dtype = uint8, numpy = 44 > >>> np. sum (a) 300 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2020-08-07 【475】Origin相关技巧