Следуя ошибка значения: истинное значение неоднозначно, я редактирую функцию logsumexp отсюда: https://github.com/scipy/scipy/blob/v0.14.0/scipy/misc/common.py#L18
Причина в том, что: 1. Я хочу сам выбрать максимальное значение, это не всегда только максимум массива 2. Я хочу поставить условие, чтобы разница после вычитания максимума из каждого элемента не опускалась ниже определенный порог.
Это мой последний код. В этом нет ничего плохого, за исключением того, что иногда он все еще возвращает бесконечность!
def mylogsumexp(self, a, is_class, maxaj=None, axis=None, b=None):
threshold = -sys.float_info.max
a = asarray(a)
if axis is None:
a = a.ravel()
else:
a = rollaxis(a, axis)
if is_class == 1:
a_max = a.max(axis=0)
else:
a_max = maxaj
if b is not None:
b = asarray(b)
if axis is None:
b = b.ravel()
else:
b = rollaxis(b, axis)
#out = log(sum(b * exp(threshold if a - a_max < threshold else a - a_max), axis=0))
out = np.log(np.sum(b * np.exp( np.minimum(a - a_max, threshold)), axis=0))
else:
out = np.log(np.sum(np.exp( np.minimum(a - a_max, threshold)), axis=0))
out += a_max