首页 > 解决方案 > Numpy 不会为点积抛出 FloatingPointError

问题描述

我正在使用两个 numpy 数组(两者float32)的点积。我故意设置 numpy 来提高 aFloatingPointError以防溢出。然而,dot它的行为并不像预期的那样:而不是FloatingPointError像使用普通乘法时那样提高 a ,而是dot返回inf.

这是预期的行为吗?有没有办法强制dot引发异常?

最小的工作示例:

import numpy as np

np.seterr(over="raise")

x = np.array([2e+38], dtype=np.float32)
y = np.array([10], dtype=np.float32)

x * y
>>> FloatingPointError: overflow encountered in multiply

np.dot(x,y)
>>> inf

标签: pythonnumpyinteger-overflow

解决方案


接受@hpaulj 的评论作为答案——matmul确实会根据需要抛出 a FloatingPointError,而dot不会(不知道为什么)。出于我的目的matmul,给出与dot.


推荐阅读