Spec-Zone.ru › TensorFlow 1.15

tf.estimator.MultiHead

Просмотреть исходный код на GitHub

Создаёт Head для многоцелевого обучения.

Наследуется от: Head

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.estimator.MultiHead, `tf.compat.v2.estimator.MultiHead`

tf.estimator.MultiHead(
    heads, head_weights=None
)

Этот класс объединяет результаты нескольких Head объектов. В частности:

  • Для обучения суммирует потери каждого объекта, вызывает train_op_fn с этой итоговой потерей.
  • Для оценки объединяет метрики, добавляя суффикс head.name к ключам в метриках оценки, таким как precision/head1.name, precision/head2.name.
  • Для прогнозирования объединяет прогнозы и обновляет ключи в словаре прогнозов до 2-кортежа, (head.name, prediction_key). Объединяет export_outputs таким образом, что по умолчанию используется первый объект.

Использование:

# In `input_fn`, specify labels as a dict keyed by head name:
def input_fn():
  features = ...
  labels1 = ...
  labels2 = ...
  return features, {'head1.name': labels1, 'head2.name': labels2}

# In `model_fn`, specify logits as a dict keyed by head name:
def model_fn(features, labels, mode):
  # Create simple heads and specify head name.
  head1 = tf.estimator.MultiClassHead(n_classes=3, name='head1')
  head2 = tf.estimator.BinaryClassHead(name='head2')
  # Create MultiHead from two simple heads.
  head = tf.estimator.MultiHead([head1, head2])
  # Create logits for each head, and combine them into a dict.
  logits1, logits2 = logit_fn()
  logits = {'head1.name': logits1, 'head2.name': logits2}
  # Return the merged EstimatorSpec
  return head.create_estimator_spec(..., logits=logits, ...)

# Create an estimator with this model_fn.
estimator = tf.estimator.Estimator(model_fn=model_fn)
estimator.train(input_fn=input_fn)

Также поддерживает logits как Tensor формы [D0, D1, ... DN, logits_dimension]. Он разделит Tensor по последнему измерению и соответствующим образом распределит его между объектами. Например:

Входные логарифмы.

logits = np.array([[-1., 1., 2., -2., 2.], [-1.5, 1., -3., 2., -2.]],

dtype=np.float32)

Предположим, head1.logits_dimension = 2 и head2.logits_dimension = 3. После

разделения, результатом является:

logits_dict = {'head1_name': [[-1., 1.], [-1.5, 1.]],

'head2_name':  [[2., -2., 2.], [-3., 2., -2.]]}

Использование:

def model_fn(features, labels, mode):
  # Create simple heads and specify head name.
  head1 = tf.estimator.MultiClassHead(n_classes=3, name='head1')
  head2 = tf.estimator.BinaryClassHead(name='head2')
  # Create multi-head from two simple heads.
  head = tf.estimator.MultiHead([head1, head2])
  # Create logits for the multihead. The result of logits is a `Tensor`.
  logits = logit_fn(logits_dimension=head.logits_dimension)
  # Return the merged EstimatorSpec
  return head.create_estimator_spec(..., logits=logits, ...)
Аргументы
heads Список или кортеж Head экземпляров. Все объекты должны иметь указанные name. Первый объект в списке используется по умолчанию во время предоставления сервиса.
head_weights Необязательный список весов, такой же длины, как и heads. Используется при объединении потерь для вычисления взвешенной суммы потерь от каждого объекта. Если None, все потери имеют одинаковый вес.
Атрибуты
logits_dimension См. base_head.Head для получения подробной информации.
loss_reduction См. base_head.Head для получения подробной информации.
name См. base_head.Head для получения подробной информации.

Методы

create_estimator_spec

Просмотреть исходный код

create_estimator_spec(
    features, mode, logits, labels=None, optimizer=None, trainable_variables=None,
    train_op_fn=None, update_ops=None, regularization_losses=None
)

Возвращает model_fn.EstimatorSpec.

Аргументы
features Входные dict объектов Tensor или SparseTensor.
mode ModeKeys оценщика.
logits Входные dict с ключами по имени объекта или логарифмы Tensor с формой [D0, D1, ... DN, logits_dimension]. Для многих приложений форма Tensor является [batch_size, logits_dimension]. Если логарифмы являются Tensor, то они разделены по последнему измерению и распределяются между объектами соответствующим образом. См. MultiHead для примеров.
labels Входные dict с ключами по имени объекта. Для каждого объекта значение метки может быть целым числом или строкой Tensor с формой, соответствующей его соответствующей logits. labels — обязательный аргумент, когда mode равно TRAIN или EVAL
optimizer Экземпляр tf.keras.optimizers.Optimizer для оптимизации потерь в режиме TRAIN. А именно, устанавливает train_op = optimizer.get_updates(loss, trainable_variables), что обновляет переменные для минимизации loss.
trainable_variables Список или кортеж Variable объектов для обновления с целью минимизации loss. В Tensorflow 1.x по умолчанию это список переменных, собранных в графике под ключом GraphKeys.TRAINABLE_VARIABLES. Так как в Tensorflow 2.x нет коллекций и GraphKeys, trainable_variables нужно передавать явно здесь.
train_op_fn Функция, которая принимает скалярную потерю Tensor и возвращает train_op. Используется, если optimizer равно None.
update_ops Список или кортеж операций обновления, которые нужно выполнять во время обучения. Например, слои, такие как BatchNormalization, создают операции обновления среднего и дисперсии, которые необходимо выполнять во время обучения. В Tensorflow 1.x они помещаются в коллекцию UPDATE_OPS. Так как в Tensorflow 2.x нет коллекций, update_ops нужно передавать явно здесь.
regularization_losses Список дополнительных скалярных потерь, которые нужно добавить к тренировочной потере, например, потери регуляризации. Эти потери обычно выражаются как среднее значение по пакету, поэтому для наилучших результатов в каждом объекте пользователям необходимо использовать значение loss_reduction=SUM_OVER_BATCH_SIZE по умолчанию, чтобы избежать ошибок масштабирования. По сравнению с потерями регуляризации для каждого объекта, эта потеря служит для регуляризации объединённой потери всех объектов в многообъектной модели и будет добавлена к общей тренировочной потере многообъектной модели.
Возвращаемое значение
Экземпляр model_fn.EstimatorSpec .
Исключения
ValueError Если и train_op_fn и optimizer заданы в режиме TRAIN, или если оба из них установлены. Если mode отсутствует в ModeKeys оценщика.

loss

Просмотреть исходный код

loss(
    labels, logits, features=None, mode=None, regularization_losses=None
)

Возвращает регуляризованную тренировочную потерю. См. base_head.Head для получения подробной информации.

metrics

Просмотреть исходный код

metrics(
    regularization_losses=None
)

Создаёт метрики. См. base_head.Head для получения подробной информации.

predictions

Просмотреть исходный код

predictions(
    logits, keys=None
)

Создаёт прогнозы. См. base_head.Head для получения подробной информации.

update_metrics

Просмотреть исходный код

update_metrics(
    eval_metrics, features, logits, labels, regularization_losses=None
)

Обновляет метрики оценки. См. base_head.Head для получения подробной информации.

© 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/estimator/MultiHead

Spec-Zone.ru

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