当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.clip_by_value用法及代码示例


将张量值剪辑到指定的最小值和最大值。

用法

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

参数

  • t 一个 TensorIndexedSlices
  • clip_value_min 要剪辑到的最小值。标量 Tensor 或可广播为 t 形状的标量。
  • clip_value_max 剪辑到的最大值。标量 Tensor 或可广播为 t 形状的标量。
  • name 操作的名称(可选)。

返回

  • 剪辑的 TensorIndexedSlices

抛出

  • tf.errors.InvalidArgumentError :如果剪辑张量会触发数组广播,这会使返回的张量大于输入。
  • TypeError 如果输入的dtype是int32并且clip_value_minclip_value_max的dtype是float32

给定一个张量 t ,此操作返回一个与 t 具有相同类型和形状的张量,其值被裁剪为 clip_value_minclip_value_max 。任何小于 clip_value_min 的值都设置为 clip_value_min 。任何大于 clip_value_max 的值都设置为 clip_value_max

注意:clip_value_min 需要小于或等于 clip_value_max 才能获得正确的结果。

例如:

基本用法将标量作为最小值和最大值传递。

t = tf.constant([[-10., -1., 0.], [0., 2., 10.]])
t2 = tf.clip_by_value(t, clip_value_min=-1, clip_value_max=1)
t2.numpy()
array([[-1., -1.,  0.],
       [ 0.,  1.,  1.]], dtype=float32)

最小值和最大值可以与 t 的大小相同,或者可以广播到该大小。

t = tf.constant([[-1, 0., 10.], [-1, 0, 10]])
clip_min = [[2],[1]]
t3 = tf.clip_by_value(t, clip_value_min=clip_min, clip_value_max=100)
t3.numpy()
array([[ 2.,  2., 10.],
       [ 1.,  1., 10.]], dtype=float32)

如果您要扩展t 的尺寸,广播会故意失败

t = tf.constant([[-1, 0., 10.], [-1, 0, 10]])
clip_min = [[[2, 1]]] # Has a third axis
t4 = tf.clip_by_value(t, clip_value_min=clip_min, clip_value_max=100)
Traceback (most recent call last):

InvalidArgumentError:Incompatible shapes:[2,3] vs. [1,1,2]

如果您尝试将 int 剪辑到 float 值(tf.cast 首先是 float 的输入),它会抛出 TypeError

t = tf.constant([[1, 2], [3, 4]], dtype=tf.int32)
t5 = tf.clip_by_value(t, clip_value_min=-3.1, clip_value_max=3.1)
Traceback (most recent call last):

TypeError:Cannot convert ...

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.clip_by_value。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。