

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 `smdebug` 用戶端程式庫來建立自訂規則作為 Python 指令碼
<a name="debugger-custom-rules-python-script"></a>

`smdebug` 規則 API 提供一個介面，可設定您自己的自訂規則。下列 python 指令碼範例示範如何自建構自訂規則，`CustomGradientRule`。本教學課程自訂規則會監控梯度是否變得太大，並將預設閾值設為 10。自訂規則會在啟動訓練任務時執行由 SageMaker AI 估算器建立的基礎試驗。

```
from smdebug.rules.rule import Rule

class CustomGradientRule(Rule):
    def __init__(self, base_trial, threshold=10.0):
        super().__init__(base_trial)
        self.threshold = float(threshold)

    def invoke_at_step(self, step):
        for tname in self.base_trial.tensor_names(collection="gradients"):
            t = self.base_trial.tensor(tname)
            abs_mean = t.reduction_value(step, "mean", abs=True)
            if abs_mean > self.threshold:
                return True
        return False
```

您可以在相同的 python 指令碼中新增任意多個自訂規則類別，並透過在以下區段建置自訂規則物件，將其部署至任何訓練任務試驗。