---
title: LayerNormParam
description: "| 属性 | 类型 | 默认值 | 描述 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendtb/ascendtb_01_0334.html
sourcePath: /source/zh/canncommercial/900/API/ascendtb/ascendtb_01_0334.html
indexId: 2b75d7d92b64c1a1c32ebc18a04f1654afdb80e1c6d753ac82e70a8f10f6649564
---
# LayerNormParam

| 属性 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| layer\_type | torch\_atb.LayerNormParam.LayerNormType | torch\_atb.LayerNormParam.LayerNormType.LAYER\_NORM\_UNDEFINED | 此默认类型不可用，用户须配置此项参数。 |
| norm\_param | torch\_atb.LayerNormParam.NormParam | \- | \- |
| pre\_norm\_param | torch\_atb.LayerNormParam.PreNormParam | \- | \- |
| post\_norm\_param | torch\_atb.LayerNormParam.PostNormParam | \- | \- |


#### LayerNormParam.LayerNormType

枚举项：

- LAYER_NORM_UNDEFINED
- LAYER_NORM_NORM
- LAYER_NORM_PRENORM
- LAYER_NORM_POSTNORM
- LAYER_NORM_MAX


#### LayerNormParam.NormParam

| 属性 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| quant\_type | torch\_atb.QuantType | torch\_atb.QuantType.QUANT\_UNQUANT | 表示不进行量化操作。 |
| epsilon | float | 1e\-5 | \- |
| begin\_norm\_axis | int | 0 | \- |
| begin\_params\_axis | int | 0 | \- |
| dynamic\_quant\_type | torch\_atb.DynamicQuantType | torch\_atb.DynamicQuantType.DYNAMIC\_QUANT\_UNDEFINED | \- |


#### LayerNormParam.PreNormParam

| 属性 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| quant\_type | torch\_atb.QuantType | torch\_atb.QuantType.QUANT\_UNQUANT | 表示不进行量化操作。 |
| epsilon | float | 1e\-5 | \- |
| op\_mode | int | 0 | \- |
| zoom\_scale\_value | float | 1.0 | \- |


#### LayerNormParam.PostNormParam

| 属性 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| quant\_type | torch\_atb.QuantType | torch\_atb.QuantType.QUANT\_UNQUANT | 表示不进行量化操作。 |
| epsilon | float | 1e\-5 | \- |
| op\_mode | int | 0 | \- |
| zoom\_scale\_value | float | 1.0 | \- |


#### 调用示例

```
import torch
import torch_atb  
import numbers

def layernorm():
    eps=1e-05
    batch, sentence_length, embedding_dim = 20, 5, 10
    embedding = torch.randn(batch, sentence_length, embedding_dim)
    embedding_npu = embedding.npu()
    normalized_shape = (embedding_dim,) if isinstance(embedding_dim, numbers.Integral) else tuple(embedding_dim)
    weight = torch.ones(normalized_shape, dtype=torch.float32).npu()
    bias = torch.zeros(normalized_shape, dtype=torch.float32).npu()
    print("embedding: ", embedding_npu)
    print("weight: ", weight)
    print("bias: ", bias)
    layer_norm_param = torch_atb.LayerNormParam(layer_type = torch_atb.LayerNormParam.LayerNormType.LAYER_NORM_NORM)
    layer_norm_param.norm_param.epsilon = eps
    layer_norm_param.norm_param.begin_norm_axis = len(normalized_shape) * -1
    layernorm = torch_atb.Operation(layer_norm_param)

    def layernorm_run():
        layernorm_outputs = layernorm.forward([embedding_npu, weight, bias])
        return layernorm_outputs

    outputs = layernorm_run()
    print("outputs: ", outputs)

if __name__ == "__main__":
    layernorm()
```
