1

正如标题中所说,我想从 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用于逼近雅可比矩阵和黑森矩阵。我运行代码时遇到的错误是

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 内的值?

4

1 回答 1

0

我做了:

myvariable._value

我得到了一个数组,其中包含 ArrayBox 中的值,然后我可以对其进行操作。

我在使用 call(myvariable) 检查了 ArrayBox 的属性后发现了它。看起来它没有记录在任何地方。希望能帮助到你

于 2019-07-28T17:29:00.957 回答