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
.
相同的结果
我正在计算两个 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
.