tf.estimator.experimental.LinearSDCA
| Просмотреть исходный код на GitHub |
Помощник Stochastic Dual Coordinate Ascent для линейных оценок.
tf.estimator.experimental.LinearSDCA(
example_id_column, num_loss_partitions=1, num_table_shards=None,
symmetric_l1_regularization=0.0, symmetric_l2_regularization=1.0, adaptive=False
)
Объекты этого класса предназначены для использования в качестве аргумента оптимизатора (хотя объекты LinearSDCA не реализуют интерфейс tf.train.Optimizer при создании tf.estimator.LinearClassifier или tf.estimator.LinearRegressor.
SDCA может быть использован только с LinearClassifier и LinearRegressor при следующих условиях:
- Столбцы признаков имеют тип V2.
- Многозначные категориальные столбцы не нормализованы. Другими словами, аргумент
sparse_combinerв конструкторе оценщика должен быть "sum". - Для классификации: бинарная метка.
- Для регрессии: одномерная метка.
Пример использования:
real_feature_column = numeric_column(...)
sparse_feature_column = categorical_column_with_hash_bucket(...)
linear_sdca = tf.estimator.experimental.LinearSDCA(
example_id_column='example_id',
num_loss_partitions=1,
num_table_shards=1,
symmetric_l2_regularization=2.0)
classifier = tf.estimator.LinearClassifier(
feature_columns=[real_feature_column, sparse_feature_column],
weight_column=...,
optimizer=linear_sdca)
classifier.train(input_fn_train, steps=50)
classifier.evaluate(input_fn=input_fn_eval)
Ожидается, что функции input_fn_* , передаваемые для обучения и оценки, возвращают пару (dict, label_tensor), где dict имеет example_id_column в качестве key , значение которого является Tensor формы [размер_пакета] и типа string. num_loss_partitions определяет sigma' в уравнении (11) из [3]. Сходимость (глобальной) потери гарантируется, если num_loss_partitions больше или равно произведению (#concurrent train ops/per worker) x (#workers). Более большие значения для num_loss_partitions приводят к более медленной сходимости. Рекомендуемое значение для num_loss_partitions в tf.estimator (где в настоящее время используется один процесс на рабочий узел) — это количество рабочих узлов, выполняющих шаги обучения. По умолчанию оно равно 1 (один компьютер). num_table_shards определяет количество фрагментов для внутренней таблицы состояния, обычно устанавливается в соответствии с количеством серверов параметров для больших наборов данных.
Алгоритм SDCA был первоначально представлен в [1], за которым последовал L1-проксимальный шаг [2], распределенная версия [3] и адаптивная выборка [4]. [1] www.jmlr.org/papers/volume14/shalev-shwartz13a/shalev-shwartz13a.pdf [2] https://arxiv.org/pdf/1309.2375.pdf [3] https://arxiv.org/pdf/1502.03508.pdf [4] https://arxiv.org/pdf/1502.08053.pdf Подробная информация об этой реализации представлена в: https://github.com/tensorflow/estimator/tree/master/tensorflow_estimator/python/estimator/canned/linear_optimizer/doc/sdca.ipynb
| Аргументы | |
|---|---|
example_id_column | Имя столбца, содержащего идентификаторы примеров. |
num_loss_partitions | Количество рабочих узлов. |
num_table_shards | Количество фрагментов внутренней таблицы состояния, обычно устанавливается в соответствии с количеством серверов параметров. |
symmetric_l1_regularization | Вещественное значение, должно быть больше или равно нулю. |
symmetric_l2_regularization | Вещественное значение, должно быть больше нуля и обычно больше 1. |
adaptive | Булево значение, указывающее использовать адаптивную выборку. |
Методы
get_train_step
get_train_step(
state_manager, weight_column_name, loss_type, feature_columns, features,
targets, bias_var, global_step
)
Возвращает операцию обучения оптимизатора SdcaModel.
© 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.3/api_docs/python/tf/estimator/experimental/LinearSDCA