【问题标题】:How to find accuracy of matrix multiplication with floating-point numbers?如何找到浮点数矩阵乘法的准确性?
【发布时间】:2019-11-28 05:51:36
【问题描述】:

我正在尝试分析当数据大小减小时浮点计算如何变得更加不准确。为此,我想对浮点表示的不同变体执行简单的矩阵运算,例如 float64、float32 和 float16。由于 float64 计算将给出三者中最精确和最准确的结果,因此我假设所有 float64 计算都给出预期结果(即错误 = 0)。

问题在于,当我将计算结果与预期结果进行比较时,我不知道如何将所有单独的错误量化为单个指标。我知道某些方法可以解决它,例如找到误差均值或误差平方和 (SSE),但我只是想知道是否有一种标准方法来计算给定矩阵计算的总体误差.

【问题讨论】:

    标签: matrix multidimensional-array floating-point precision matrix-multiplication


    【解决方案1】:

    也许条件数的变体会有所帮助?见这里:https://en.wikipedia.org/wiki/Condition_number#Matrices

    【讨论】:

      【解决方案2】:

      如果有计算给定矩阵计算的总体误差的标准方法。

      考虑矩阵大小为 1 的情况。那么我们处于熟悉的一维域中。

      如何比较y_computed_as_floaty_expected?即使在这种情况下,也没有标准将它们作为浮点数进行比较。减去?划分?它通常是上下文相关的。所以对 OP 的问题说“不”。

      但也有一些常见的做法。因此,对于特定案例,OP 问题可能是“是”。


      浮点计算通常通过Unit in the last place*缩放计算和数学预期值之间的差异来评估。

      error = (y_computed_as_float - y_expected)/ulpf((float) y_expected);
      

      对于 N 维矩阵,矩阵误差可以使用 N2 个元素误差中的root mean square


      * ULP 缩放在接近 2 的每个幂以及接近 0.0 时存在一些问题。有一些方法可以缓解这种情况,但我们会陷入困境。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2018-01-04
        相关资源
        最近更新 更多