Стійке агрегування log-sum-exp
Агрегуйте до 1000 логарифмічних значень від мінус 1e300 до 1e300, віднімаючи максимум перед експоненціюванням.
from math import exp, fsum, log, inf
def log_sum_exp(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or not -1e300 <= v <= 1e300 for v in values
):
raise ValueError("values.range")
if not values:
return -inf
peak = max(values)
return peak + log(fsum(exp(v - peak) for v in values))| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
|---|---|
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
| Проєкт | Перевірте порожній ввід, повторювані великі й дуже від’ємні значення, повертаючи мінус нескінченність лише для порожнього вводу та відхиляючи логічні, нескінченні або позадіапазонні елементи. |
from math import exp, fsum, log, inf
def log_sum_exp(values):
if type(values) not in (list, tuple) or len(values) > 1000:
raise ValueError("values.container")
values = tuple(values)
if len(values) > 1000 or any(
type(v) not in (int, float) or not -1e300 <= v <= 1e300 for v in values
):
raise ValueError("values.range")
if not values:
return -inf
peak = max(values)
return peak + log(fsum(exp(v - peak) for v in values))Перевірте числову поведінку перед довірою до нового результату
ExponQuay — це клієнт програмування з ШІ у Windows для розробників, яким потрібне пояснення числової зміни в контексті застосунку. Додайте код, проблемні дані й очікувану поведінку до розмови про проєкт. Корисний перший запит просить підключену модель відокремити задуману математичну операцію від обмежень поточної реалізації.
Наприклад, завдання логарифмічного агрегування може задавати обмежені вхідні значення, максимальний розмір колекції й результат для порожніх даних. Попросіть модель дослідити підхід зі зсувом на максимум зі збереженням цього контракту. Додайте код споживача відповіді, особливо якщо він відрізняє порожнє агрегування від скінченного числового результату. Обговорення залишається про код вашого проєкту.
Перед прийняттям пропозиції запустіть у власному середовищі випадки з повторюваними великими й дуже від’ємними значеннями. Перевірте відхилення непідтримуваних типів і даних поза діапазоном разом зі звичайним результатом. Порівняйте з доречним еталоном для потрібної застосунку точності. Метод, призначений покращити стійкість, усе одно потребує перевірки на фактичному навантаженні.
Оберіть підтримувану ExponQuay кінцеву точку, сумісну з OpenAI, або Anthropic. Якщо там доступні моделі ШІ без фільтрів, можна обрати одну з потрібними обліковими даними. Її назва не обіцяє математичної точності; обмеження моделі, межі контексту й підтримка інструментів залежать від фактичної конфігурації кінцевої точки та моделі.
Підготовка перевірки числового агрегування
Що додати до проблемних числових даних?
Додайте очікуваний діапазон або еталонний результат, допустимі типи даних і спосіб обробки спеціальних результатів кодом виклику. Ці факти дають змогу обговорювати потреби застосунку, а не просто замінювати вираз математично подібною формулою.
Чи мають порожні дані повертати звичайне число?
Дотримуйтеся визначеного контракту. Приклад використовує від’ємну нескінченність для порожнього агрегування, що має розуміти споживач. Перевірте цей код і порожній випадок окремо від дуже від’ємних, але допустимих даних перед прийняттям зміни.
Навіщо перевіряти повторювані великі значення?
Вони перевіряють корисну межу підходу до агрегування, обговорюваного в цьому прикладі проєкту. Укажіть очікувану поведінку й порівняйте реалізацію з доречним еталоном. Не робіть висновку про загальну числову точність з одного звичайного тесту без крайніх значень.
Чи може модель обрати допустиму похибку?
Вона може пояснити компроміси, але допуск визначають вимоги застосунку. Надайте цю вимогу й використані числові типи. Запустіть отриману пропозицію на характерних даних власними інструментами та задокументуйте виявлені під час перевірки межі.
ExponQuay · Оновлено 2026-10-25