比较与tf.clip_by_value的功能差异

tf.clip_by_value

tf.clip_by_value(
    t, clip_value_min, clip_value_max, name=None
)

更多内容详见tf.clip_by_value

mindspore.Tensor.clip

mindspore.Tensor.clip(xmin, xmax, dtype=None)

更多内容详见mindspore.Tensor.clip

使用方式

主要功能一致。tf.clip_by_valuetint32clip_value_minclip_value_maxfloat32类型时,抛出类型错误,mindspore.Tensor.clip没有此限制。

代码示例

import mindspore as ms

x = ms.Tensor([1, 2, 3, -4, 0, 3, 2, 0]).astype(ms.int32)
print(x.clip(0, 2))
# [1 2 2 0 0 2 2 0]
print(x.clip(0., 2.))
# [1 2 2 0 0 2 2 0]
print(x.clip(Tensor([1, 1, 1, 1, 1, 1, 1, 1]), 2))
# [1 2 2 1 1 2 2 1]

import tensorflow as tf
tf.enable_eager_execution()

A = tf.constant([1, 2, 3, -4, 0, 3, 2, 0])
B = tf.clip_by_value(A, clip_value_min=0, clip_value_max=2)
print(B.numpy())
# [1 2 2 0 0 2 2 0]
C = tf.clip_by_value(A, clip_value_min=0., clip_value_max=2.)
# throws `TypeError`
D = tf.clip_by_value(A, [1, 1, 1, 1, 1, 1, 1, 1], 2)
print(D.numpy())
# [1 2 2 1 1 2 2 1]