将Autograd ArrayBox转换为BigFloat

时间:2018-09-13 16:34:51

标签: scipy autograd bigfloat

如标题中所述,我想从Autograd ArrayBox转换为BigFloat。

我的功能很简单:

def fun(mean, variance, bin_mean, bin_variance):

    first = np.float(bf.sqrt(1.0 * bin_variance / (bin_variance + variance)))

    second_numerator = (bin_mean - mean)**2
    second_denominator = 2*(bin_variance + variance)
    second = np.float(bf.exp(-second_numerator/second_denominator))

    return first * second

,我需要高精度,因此我想使用bigfloat软件包。现在,此函数是更复杂函数的一部分,为此,我正在使用scipy.optimize.minimize函数查找函数的最小值,同时也使用autograd来近似Jacobian和Hessian矩阵。 运行代码时出现的错误是

TypeError: Unable to convert argument Autograd ArrayBox with value 0.01297563222656762 of type <class 'autograd.numpy.numpy_boxes.ArrayBox'> to BigFloat

所以我的问题是:如何从Autograd的ArrayBox转换为BigFloat?如何甚至正确地提取ArrayBox中的值?

1 个答案:

答案 0 :(得分:0)

我做到了:

myvariable._value

,我得到了一个带有ArrayBox内的值的数组,然后可以对其进行操作。

在使用call(myvariable)检查ArrayBox的属性后,我发现了这一点。看起来它没有记录在任何地方。 希望对您有帮助