當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。