tf.contrib.image.interpolate_spline
Интерполяция сигнала с помощью полигармонической интерполяции.
tf.contrib.image.interpolate_spline(
train_points, train_values, query_points, order, regularization_weight=0.0,
name='interpolate_spline'
)
Интерполянт имеет вид
Это сумма двух слагаемых: (1) взвешенная сумма радиальных базисных функций (RBF) с центрами \(c_1, ... c_n\), и (2) линейный член с смещением. Векторы \(c_i\) являются точками «обучения». В коде b поглощается в v путем добавления 1 в качестве последнего измерения к x. Коэффициенты w и v оцениваются таким образом, что интерполянт точно соответствует значению функции в точках \(c_i\), вектор w ортогонален каждому \(c_i\) и сумма векторов w равна 0. При этих ограничениях коэффициенты могут быть получены путем решения линейной системы.
\(\phi\) — RBF, параметризованная порядком интерполяции. Использование order=2 даёт хорошо известную сплайн тонкой пластины.
Мы также предоставляем возможность выполнять регулируемую интерполяцию. В этом случае интерполянт выбирается так, чтобы балансировать между квадратичной ошибкой на обучающих данных и некоторой мерой её кривизны (подробнее). Использование веса регуляризации больше нуля приводит к тому, что интерполянт больше не будет точно соответствовать обучающим данным. Однако он может быть менее подвержен переобучению, особенно при интерполяции высокого порядка.
Обратите внимание, что процедура интерполяции дифференцируема по всем входным данным, кроме параметра порядка.
Мы поддерживаем входы с динамической формой, где batch_size, n и m равны None во время построения графа. Однако d и k должны быть известны.
| Args | |
|---|---|
train_points | [batch_size, n, d] float Tensor n точек d-мерного пространства. Эти точки не обязательно должны быть равноотстоящими. |
train_values | [batch_size, n, k] float Tensor n значений c-мерного пространства, вычисленных в точках train_points. |
query_points | [batch_size, m, d] Tensor m точек d-мерного пространства, где мы будем получать значения интерполянта. |
order | порядок интерполяции. Типичные значения: 1 для \(\phi(r) = r\), 2 для \(\phi(r) = r^2 * log(r)\) (сплайн тонкой пластины) или 3 для \(\phi(r) = r^3\). |
regularization_weight | вес, накладываемый на регуляризирующий член. Это существенно зависит от задачи, и его следует настраивать. Для многих задач можно использовать нулевую регуляризацию. Если используется ненулевое значение, рекомендуется небольшое значение, например 0,001. |
name | префикс имени для операций, созданных этой функцией |
| Returns | |
|---|---|
[b, m, k] float Tensor значений в точках запроса. Мы используем train_points и train_values для выполнения полигармонической интерполяции. Значения в точках запроса — значения интерполянта, вычисленные в точках, указанных в query_points. |
© 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/r1.15/api_docs/python/tf/contrib/image/interpolate_spline