我有一个包含数百万个元素的大向量 F,在计算范数时表现不一致。
np.linalg.norm(F,2.000001)=3225.96..
np.linalg.norm(F,2)=inf
np.linalg.norm(F,1.999999)=3226.01..
np.linalg.norm(F,1)=inf
---------
np.linalg.norm(F)=inf
np.linalg.norm(F/12)=inf
np.linalg.norm(F/13)=246.25
---------
np.sum(F*F)=inf
np.sum(F*F/169)=60639
np.sum(F*F/144)=inf
---------
np.all(np.isfinite(F))=True
np.max(np.abs(F))=11
---------
F.dtype=dtype('float16')
除了某些笨拙的解决方案外,有人知道发生了什么吗?
np.sum(F*F)
会得到什么?如果去掉第二个参数np.linalg.norm(F)
呢?np.max(F)
是什么?np.isfinite(F).all()
又是什么? - EricF.dtype
是什么? - Ericdtype('float16')
- ShakesBeerfloat16
。可能不是规范优化的目标。 - saschanumpy.array([11 * 11 * 1e6], dtype='float16')
是无穷大。 - kennytm