如标题中所述,我想从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中的值?
答案 0 :(得分:0)
我做到了:
myvariable._value
,我得到了一个带有ArrayBox内的值的数组,然后可以对其进行操作。
在使用call(myvariable)检查ArrayBox的属性后,我发现了这一点。看起来它没有记录在任何地方。 希望对您有帮助