Spec-Zone.ru › TensorFlow 2.4

tf.nn.isotonic_regression

Решает задачи изотонной регрессии вдоль заданной оси.

tf.nn.isotonic_regression(
    inputs, decreasing=True, axis=-1
)

Для каждого вектора x решается задача

$$\argmin_{y_1 >= y_2 >= ... >= y_n} \sum_i (x_i - y_i)^2.$$

Так как решение является покомпонентно постоянным, возвращается второй тензор, который кодирует сегменты. Задачи решаются вдоль заданной оси.

Рассмотрим пример, где решаются две задачи в пакете. Первый вход — [3, 1, 2], а второй 1, 3, 4.

>>> x = tf.constant([[3, 1, 2], [1, 3, 4]], dtype=tf.float32)
>>> y, segments = tf.nn.isotonic_regression(x, axis=1)
>>> y  # The solution.
<tf.Tensor: shape=(2, 3), dtype=float32, numpy=
array([[3.       , 1.5      , 1.5      ],
       [2.6666667, 2.6666667, 2.6666667]], dtype=float32)>

Обратите внимание, что первое решение имеет два блока [2] и [1.5, 1.5]. Второе решение постоянное, поэтому имеет один сегмент. Именно эти сегменты и кодирует второй возвращаемый тензор:

segments
<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[0, 1, 1],
       [0, 0, 0]], dtype=int32)>
Аргументы
inputs Тензор, содержащий входные данные.
decreasing Если установлено в False, неравенства в оптимизируемых ограничениях меняются на противоположные.
axis Ось, вдоль которой должны решаться задачи.
Возвращаемое значение
output Решения, имеющие такую же форму и тип, что и входные данные.
segments Тензор int32, имеющий такую же форму, что и входные данные, указывающий сегменты, имеющие одинаковое значение. В частности, позиции с одинаковым значением соответствуют одному сегменту. Эти значения начинаются с нуля и монотонно возрастают для каждого решения.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/nn/isotonic_regression

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API