Конвертировать 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 ответов

Я сделал:

myvariable._value

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

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

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