比较与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_value
在t
为int32
,clip_value_min
或clip_value_max
为float32
类型时,抛出类型错误,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]