在binaryop的pow算子上,用CPU跑模型,某些特殊的数值在算x**2的时候出现inf。并不像数据溢出,因为并不是小的值会出现这种情况。
比如:上面是x,下面是x**2,有些值正常,有些值不正常,都去到e38了。
该层的参数如下:
目前workaround就是用vulkan跑,用vulkan确认是正常的。不知道目前是naive实现有问题还是x86加速的问题,我觉得是后者。所以说,ncnn有没有参数,可以对该模型实例强制用naive实现而不是x86呢?谢谢
zqry0prt1#
哦, 发现只要是负数求pow就是inf。这个在issue也找到了。#2139@nihui 大佬,这个可以修复吗?
eeq64g8w2#
或许可以通过增加平方算子解决?对负数求pow实现起来比较困难吧,而且也会影响正数求解的速度,感觉加一个平方算子更简单。
lqfhib0f3#
你最后是怎么解决的呀
ct2axkht4#
没有解决,就用GPU跑。我是希望可以像vulkan那样,可以随意开关。
4条答案
按热度按时间zqry0prt1#
哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?
eeq64g8w2#
或许可以通过增加平方算子解决?对负数求pow实现起来比较困难吧,而且也会影响正数求解的速度,感觉加一个平方算子更简单。
lqfhib0f3#
哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?
你最后是怎么解决的呀
ct2axkht4#
哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?
你最后是怎么解决的呀
没有解决,就用GPU跑。我是希望可以像vulkan那样,可以随意开关。