Мы можем использовать немного математики, чтобы избежать числового переполнения.
Предположим, x
- это массив numpy
.
Проблема возникает из abs((x**3).sum())
, а именно:операция кубирования.Мы можем сделать вычисление более стабильным, уменьшив каждое число в x
до константы.Поскольку мы делим на константу внутри массива перед кубированием, нам нужно умножить на константу кубизированную вне суммирования.
Другими словами:
abs((x**3).sum()) = (constant**3)*abs(((x/constant)**3).sum())
Используя свойства журналов, вы можете упростить свое окончательное выражение до следующего:
np.log(constant**3) + np.log(abs(((x/constant)**3).sum(0)))