Numpy 不会为点积抛出 FloatingPointError

Numpy doesn't throw FloatingPointError for dot product

我正在计算两个 numpy 数组(都是 float32)的点积。我故意设置 numpy 以在溢出的情况下引发 FloatingPointError 。但是,dot 的行为并不像预期的那样:不是像使用普通乘法时那样引发 FloatingPointError,而是 dot returns 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

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

相同的结果