ErrorClipByValue¶
给定一个 Tensor t
(该 Tensor 传入方式见代码示例),对 Tensor 中的元素超出给定最大 max
和最小界 min
内区间范围 [min, max] 的元素,重设为所超出界的界值。
任何小于min(最小值)的值都被设置为
min
任何大于max(最大值)的值都被设置为
max
参数¶
max (foat) - 要修剪的最大值。
min (float) - 要修剪的最小值。如果用户没有设置,将被框架默认设置为
-max
。
代码示例¶
import paddle.fluid as fluid
BATCH_SIZE = 128
CLIP_MAX = 2e-6
CLIP_MIN = -1e-6
prog = fluid.framework.Program()
with fluid.program_guard(main_program=prog):
image = fluid.layers.data(name='x', shape=[784], dtype='float32')
hidden1 = fluid.layers.fc(input=image, size=128, act='relu')
hidden2 = fluid.layers.fc(input=hidden1, size=64, act='relu')
predict = fluid.layers.fc(input=hidden2, size=10, act='softmax')
label = fluid.layers.data(name='y', shape=[1], dtype='int64')
cost = fluid.layers.cross_entropy(input=predict, label=label)
avg_cost = fluid.layers.mean(cost)
prog_clip = prog.clone()
prog_clip.block(0).var(hidden1.name)._set_error_clip(
fluid.clip.ErrorClipByValue(max=CLIP_MAX, min=CLIP_MIN))