Stabilní agregace log-sum-exp
Agregujte nejvýše 1000 logaritmických hodnot od minus 1e300 do 1e300 odečtením maxima před exponenciací.
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))| Před použitím zkontrolujte | Porovnejte skutečné chování s očekávaným výsledkem. Pokud kontrola selže, před dalšími změnami zjistěte příčinu. |
|---|---|
| Modely | Nastavte endpoint kompatibilní s OpenAI nebo Anthropic pomocí základní URL a případného API klíče. Otestujte připojení. Lokální server modelu musí běžet; vzdálené nástroje mohou data odesílat samostatně. |
| Projekt | Ověřte prázdný vstup, opakované velké a velmi záporné hodnoty a vraťte minus nekonečno jen pro prázdno; odmítněte booleovské, nekonečné nebo nepovolené hodnoty. |
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))Prověřte numerické chování před důvěrou v nový výsledek
ExponQuay je programovací klient s AI pro Windows pro vývojáře, kteří potřebují vysvětlit numerickou změnu v kontextu aplikace. Do projektové konverzace přineste zdrojový kód, problematický vstup a očekávané chování. Užitečný první požadavek žádá připojený model o oddělení zamýšlené matematické operace od omezení současné implementace.
Například úloha logaritmické agregace může určit omezené vstupní hodnoty, maximální velikost kolekce a výsledek pro prázdný vstup. Požádejte model o prozkoumání postupu s posunem o maximum při zachování těchto pravidel. Zahrňte volající kód využívající odpověď, zejména pokud rozlišuje prázdnou agregaci a konečný numerický výsledek. Diskuse se stále týká kódu ve vašem projektu.
Před přijetím návrhu spusťte ve vlastním prostředí případy s opakovanými velkými a velmi zápornými hodnotami. Vedle běžného výsledku ověřte odmítnutí nepodporovaných typů a vstupů mimo rozsah. Porovnejte je s vhodnou referencí pro přesnost požadovanou aplikací. I metoda zamýšlená ke zlepšení stability zaslouží ověření na zátěži, které bude skutečně sloužit.
Zvolte koncový bod kompatibilní s OpenAI nebo koncový bod Anthropic podporovaný ExponQuay. Jsou-li tam dostupné nefiltrované modely AI, můžete některý zvolit s potřebnými přihlašovacími údaji. Jeho označení neslibuje matematickou přesnost; omezení modelu, limity kontextu a podpora nástrojů závisejí na skutečné konfiguraci koncového bodu a modelu.
Příprava kontroly numerické agregace
Co přiložit k problematickému numerickému vstupu?
Zahrňte očekávaný rozsah nebo referenční výsledek, přijímané vstupní typy a zacházení volajícího se zvláštními výstupy. Díky tomu diskuse řeší potřeby aplikace a pouze nenahrazuje jeden výraz matematicky podobným vzorcem.
Má prázdný vstup vracet běžné číslo?
Dodržte pravidla, která určíte. Příklad pro prázdnou agregaci používá záporné nekonečno, kterému příjemce musí rozumět. Před přijetím navržené změny prověřte volajícího a prázdný případ otestujte odděleně od velmi záporných, ale platných vstupů.
Proč testovat opakované velké hodnoty?
Prověřují užitečnou hranici agregačního postupu probíraného v tomto příkladu projektu. Uveďte očekávané chování a porovnejte implementaci s vhodnou referencí. Z jediného běžného testu bez krajních hodnot nevyvozujte obecnou numerickou přesnost.
Může model zvolit přijatelnou toleranci chyby?
Může vysvětlit kompromisy, ale toleranci určují požadavky aplikace. Dodejte požadavek a používané číselné typy. Výsledný návrh spusťte na reprezentativních vstupech vlastními nástroji a zdokumentujte limity pozorované při kontrole.
ExponQuay · Aktualizováno 2026-10-25