Spec-Zone.ru › TensorFlow 1.15

tf.contrib.estimator.multi_head

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

tf.contrib.estimator.multi_head(
    heads, head_weights=None
)

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

  • Для обучения суммирует потери каждого блока, вызывает train_op_fn с этой итоговой потерей.
  • Для оценки объединяет метрики, добавляя суффикс head.name к ключам в метриках оценки, таким как precision/head1, precision/head2.
  • Для предсказания объединяет предсказания и обновляет ключи в словаре предсказаний на 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': labels1, 'head2': 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 = multi_class_head(n_classes=3, name='head1')
  head2 = binary_classification_head(name='head2')
  # Create multi-head from two simple heads.
  head = multi_head([head1, head2])
  # Create logits for each head, and combine them into a dict.
  logits1, logits2 = logit_fn()
  logits = {'head1': logits1, 'head2': 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, steps=100)

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

def model_fn(features, labels, mode):
  # Create simple heads and specify head name.
  head1 = multi_class_head(n_classes=3, name='head1')
  head2 = binary_classification_head(name='head2')
  # Create multi-head from two simple heads.
  head = multi_head([head1, head2])
  # Create logits for the multihead.
  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, все потери взвешиваются одинаково.
Возвращает
Экземпляр _Head, который объединяет несколько блоков.
Возможные исключения
ValueError Если heads пуст.
ValueError Если у любого из heads нет name.
ValueError Если heads и head_weights имеют разный размер.

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

Spec-Zone.ru

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