Конвертировать Autograd ArrayBox в BigFloat - PullRequest
0 голосов
/ 13 сентября 2018

Как сказано в заголовке, я хочу конвертировать из 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?

1 Ответ

0 голосов
/ 28 июля 2019

Я сделал:

myvariable._value

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

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

...