tf.clip_by_value
Ограничивает значения тензора заданными минимальным и максимальным значениями.
tf.clip_by_value(
t, clip_value_min, clip_value_max, name=None
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных материалах |
|---|---|
Для заданного тензора t эта операция возвращает тензор того же типа и формы, что и t, значения которого ограничены диапазоном от clip_value_min до clip_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]
Возникает исключение TypeError, если попытаться ограничить int значением типа float (сначала преобразуйте входные данные в float с помощью tf.cast).
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 ...
| Аргументы | |
|---|---|
t | Tensor или IndexedSlices. |
clip_value_min | Минимальное значение ограничения. Скаляр Tensor или значение, совместимое с формой t при широковещательном распространении. |
clip_value_max | Максимальное значение ограничения. Скаляр Tensor или значение, совместимое с формой t при широковещательном распространении. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Ограниченный Tensor или IndexedSlices. |
| Вызывает исключения | |
|---|---|
tf.errors.InvalidArgumentError: если тензоры ограничения вызывают широковещательное распространение массивов, в результате которого возвращаемый тензор становится больше входного. | |
TypeError | Если dtype входных данных — int32, а dtype значения clip_value_min или clip_value_max — float32 |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/clip_by_value