Преобразование autograd arraybox в 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 для аппроксимации матриц Якобиана и Гессе. Ошибка, которую я получаю при запуске своего кода:

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

Итак, мой вопрос: как преобразовать ArrayBox Autograd в BigFloat? Как даже правильно извлечь значение внутри ArrayBox?

0
0
774
1

Ответы 1

Я сделал:

myvariable._value

и у меня есть массив со значениями внутри ArrayBox, которыми затем я могу манипулировать.

Я понял это после проверки атрибутов ArrayBox с помощью call (myvariable). Похоже нигде не задокументировано. Надеюсь, это поможет

Другие вопросы по теме