安定したlog-sum-exp集約
マイナス1e300から1e300までの最大1000個の対数値を最大値だけずらしてから指数関数で集約します。
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のエンドポイントを、ベース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 AIコーディングクライアントです。ソース、問題の入力、期待動作をプロジェクトの会話に提示します。最初に、意図する数学的操作と現行実装の制約を分けるよう接続モデルに依頼すると有用です。
例えば対数集計では、入力値の範囲、コレクションの最大サイズ、空入力の結果を指定できます。その契約を維持しながら最大値を引く手法を検討するよう依頼してください。特に空の集計と有限の数値結果を区別する場合は、結果を使う呼び出し側を含めます。対象はあくまで自分のプロジェクトのコードです。
提案を受け入れる前に、自分の環境で大きい値の繰り返しと非常に小さい負の値を試します。通常の結果に加え、非対応型や範囲外入力の拒否も確認してください。アプリに必要な精度に適した参照と比較します。安定性を改善する意図の手法でも、実際に処理する負荷での検証が必要です。
ExponQuayが対応するOpenAI互換またはAnthropicのエンドポイントを選びます。そこでフィルターなしAIモデルが提供されていれば、必要な認証情報で選択できます。呼称は数学的精度の保証ではありません。モデルの制限、コンテキスト上限、ツール対応は実際のエンドポイントとモデル構成に依存します。
数値集計のレビューを準備する
問題の数値入力には何を添えますか?
期待範囲または参照結果、受理する入力型、特殊な出力の呼び出し側での扱いを含めます。単に数学的に似た式に置き換えず、アプリの必要に沿って検討できます。
空入力は通常の数を返すべきですか?
指定した契約に従います。例では空の集計に負の無限大を使い、利用側が理解する必要があります。変更案を受け入れる前に呼び出し側をレビューし、非常に小さい負の有効入力とは別に空のケースをテストしてください。
大きい値の繰り返しを試す理由は何ですか?
この例の集計手法にとって有用な境界を検証するためです。期待動作を示し、適切な参照と比較します。極端な値を避けた一つの普通の例から全般的な数値精度を推測しないでください。
許容誤差はモデルが決められますか?
トレードオフは説明できますが、許容誤差を決めるのはアプリの要件です。要件と使用する数値型を提示してください。自分のツールで代表入力に対して提案を実行し、レビューで観察した限界を記録します。
ExponQuay · 更新日 2026-10-25