Stabiele log-sum-exp-aggregatie
Aggregeer maximaal 1000 logwaarden van min 1e300 tot 1e300 door vóór exponentiëren hun maximum af te trekken.
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))| Controleer vóór het toepassen | Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen. |
|---|---|
| Modellen | Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen. |
| Project | Test lege invoer, herhaalde grote en zeer negatieve waarden en geef alleen bij leegte min oneindig terug; weiger booleaanse, niet-eindige of ongeldige waarden. |
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))Beoordeel numeriek gedrag voordat je het nieuwe resultaat vertrouwt
ExponQuay is een AI-programmeerclient voor Windows voor ontwikkelaars die een numerieke wijziging in haar toepassingscontext willen begrijpen. Voeg broncode, problematische invoer en verwacht gedrag aan het projectgesprek toe. Een nuttig eerste verzoek vraagt het verbonden model de bedoelde wiskundige bewerking te scheiden van de beperkingen van de huidige implementatie.
Een logaritmische aggregatietaak kan bijvoorbeeld begrensde invoerwaarden, een maximale verzamelingsgrootte en een resultaat voor lege invoer specificeren. Vraag het model een aanpak met verschuiving ten opzichte van het maximum te onderzoeken met behoud van die afspraken. Voeg de aanroeper toe die het antwoord gebruikt, vooral als die een leeg aggregaat onderscheidt van een eindig numeriek resultaat. Het gesprek blijft over code in je project gaan.
Voer voordat je het voorstel accepteert in je eigen omgeving gevallen uit met herhaalde grote waarden en zeer negatieve waarden. Controleer naast het gewone resultaat ook afwijzing van niet-ondersteunde typen en invoer buiten het bereik. Vergelijk met een geschikte referentie voor de precisie die je toepassing nodig heeft. Een methode die stabiliteit moet verbeteren verdient nog steeds verificatie op de werkelijke werklast.
Kies een door ExponQuay ondersteund OpenAI-compatibel of Anthropic-endpoint. Als daar ongefilterde AI-modellen beschikbaar zijn, kun je er een selecteren met de vereiste inloggegevens. Het label belooft geen wiskundige precisie; modelbeperkingen, contextlimieten en toolondersteuning hangen af van de werkelijke endpoint- en modelconfiguratie.
Een beoordeling van numerieke aggregatie voorbereiden
Wat hoort bij problematische numerieke invoer?
Voeg het verwachte bereik of referentieresultaat, geaccepteerde invoertypen en de behandeling van bijzondere uitvoer door de aanroeper toe. Zo kan het gesprek de behoeften van de toepassing behandelen in plaats van alleen een expressie door een wiskundig vergelijkbare formule te vervangen.
Moet lege invoer een gewoon getal opleveren?
Volg de afspraken die je vastlegt. Het voorbeeld gebruikt negatieve oneindigheid voor een leeg aggregaat; de afnemer moet dat begrijpen. Beoordeel die aanroeper en test het lege geval afzonderlijk van zeer negatieve maar geldige invoer voordat je een wijziging accepteert.
Waarom herhaalde grote waarden testen?
Ze testen een nuttige grens voor de aggregatieaanpak in dit projectvoorbeeld. Vermeld het verwachte gedrag en vergelijk de implementatie met een geschikte referentie. Leid geen algemene numerieke nauwkeurigheid af uit één gewoon testgeval dat extreme waarden vermijdt.
Kan het model een aanvaardbare fouttolerantie kiezen?
Het kan afwegingen uitleggen, maar de eisen van je toepassing bepalen de tolerantie. Geef die eis en de gebruikte numerieke typen op. Test het resulterende voorstel met representatieve invoer en je eigen tools en documenteer de grenzen die je tijdens de beoordeling waarneemt.
ExponQuay · Bijgewerkt 2026-10-25