tf.clip_by_global_norm.md 1.3 KB
Newer Older
Z
zhoukunsheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
## tf.clip_by_global_norm

### [tf.clip_by_global_norm](https://www.tensorflow.org/api_docs/python/tf/clip_by_global_norm)

```python
tf.clip_by_global_norm(
    t_list,
    clip_norm,
    use_norm=None,
    name=None
)
```

### [paddle.fluid.clip.GradientClipByGlobalNorm](http://paddlepaddle.org/documentation/docs/zh/develop/api_cn/clip_cn.html#gradientclipbyglobalnorm)

```python
paddle.fluid.clip.GradientClipByGlobalNorm(
    clip_norm, 
    group_name='default_group'
)
```

### 功能差异

#### 使用方式

TensorFlow:采用函数调用形式,输入需要执行global_norm裁剪的tensor,返回裁剪后的结果;  

PaddlePaddle:采用类对象定义形式,使用`set_gradient_clip`函数设置`GradientClipByGlobalNorm`对象为裁剪方式。

#### 其他
TensorFlow:使用`use_norm`支持外部设置global_norm,若没有设置则从`t_list`计算得到;  

PaddlePaddle:不支持外部设置。

### 代码示例
```
# 获取待裁剪的tensor列表
p_g_clip = fluid.backward.append_backward(loss=avg_cost_clip)

with fluid.program_guard(main_program=prog_clip):
    # 设置裁剪方式
    fluid.clip.set_gradient_clip(
      fluid.clip.GradientClipByGlobalNorm(clip_norm=2.0))
    
    # 执行裁剪并获取结果
    p_g_clip = fluid.clip.append_gradient_clip_ops(p_g_clip)

```