2
私はいくつかの正規化操作を行っていますが、驚いたことに、操作を元に戻そうとすると、既定の6小数点精度であるassert_array_almost_equal
に対して100%の不一致が発生します。これはなぜ起こるのですか?それは私の最大値の精度に起因することができますか?もしそうなら、どのようにしてnumpy.ndarray.max()
の精度を上げることができますか?正規化操作を元に戻すときの精度問題
from __future__ import division
import numpy
_max = numpy.float128(67.1036) # output of numpy.ndarray.max() on an a float32 array
def divide_and_mult(x, y):
return numpy.divide(numpy.float128(x), y) * y
for i in range(100):
try: numpy.testing.assert_array_equal(divide_and_mult(i, _max), numpy.float128(i))
except AssertionError, e: print e
"assert_array_equalのデフォルトの小数点以下6桁の精度" < - 私は 'assert_array_equal'関数を何か他のものと混同しなければならないと思います。そのようなデフォルトはありません: 'assert_array_equal'は、公差なしで、_exact_等値をチェックします。 –
はい、あなたは正しいMark、私は不一致パーセンテージを見るために別の実験で使用したnumpy.testingから 'assert_array_almost_equal'関数を参照していました。 –