Spec-Zone.ru › TensorFlow

tf.nest.flatten

Возвращает плоский список из заданной структуры.

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

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

Подробнее см. в руководстве по миграции.

tf.compat.v1.nest.flatten

tf.nest.flatten(
    structure, expand_composites=False
)

Используется в блокнотах

Используется в руководстве Используется в учебных материалах
  • Импорт модели JAX с помощью JAX2TF
  • Работа с RNN
  • Пользовательские федеративные алгоритмы, часть 2: реализация федеративного усреднения
  • Байесовское моделирование с помощью совместного распределения
  • Вариационный вывод для вероятностных графических моделей с помощью совместных распределений
  • TensorFlow 2 TPUEmbeddingLayer: краткое руководство
  • Сети

Определение структуры см. в tf.nest.

Если структура является атомом, возвращается список из одного элемента: [structure].

Это обратная операция к методу nest.pack_sequence_as, который принимает плоский список и восстанавливает из него вложенную структуру.

В случае экземпляров dict последовательность состоит из значений, отсортированных по ключу для обеспечения детерминированного поведения. Это также относится к экземплярам OrderedDict: порядок элементов в последовательности игнорируется, вместо него используется сортировка ключей. То же правило применяется в nest.pack_sequence_as. Это позволяет корректно восстанавливать dict и OrderedDict после их преобразования в плоский список, а также преобразовывать OrderedDict в плоский список и восстанавливать его с помощью соответствующего обычного dict или наоборот. Словари с ключами, которые нельзя отсортировать, преобразовать в плоский список нельзя.

Во время выполнения этой функции пользователям не следует изменять коллекции, используемые в nest.

Примеры:

  1. Словарь Python (сортировка по ключу):

    dict = { "key3": "value3", "key1": "value1", "key2": "value2" }
    tf.nest.flatten(dict)
      ['value1', 'value2', 'value3']
      
  2. Вложенный кортеж Python:

    tuple = ((1.0, 2.0), (3.0, 4.0, 5.0), 6.0)
    tf.nest.flatten(tuple)
          [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
      
  3. Вложенный словарь словарей:

    dict = { "key3": {"c": (1.0, 2.0), "a": (3.0)},
    "key1": {"m": "val1", "g": "val2"} }
    tf.nest.flatten(dict)
      ['val2', 'val1', 3.0, 1.0, 2.0]
      
  4. Массив Numpy (не будет преобразован в плоский список):

    array = np.array([[1, 2], [3, 4]])
    tf.nest.flatten(array)
          [array([[1, 2],
                  [3, 4]])]
      
  5. tf.Tensor (не будет преобразован в плоский список):

    tensor = tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
    tf.nest.flatten(tensor)
          [<tf.Tensor: shape=(3, 3), dtype=float32, numpy=
            array([[1., 2., 3.],
                   [4., 5., 6.],
                   [7., 8., 9.]], dtype=float32)>]
      
  6. tf.RaggedTensor: это составной тензор, представление которого состоит из плоского списка «values» и списка «row_splits», указывающего, как разбить плоский список на отдельные строки. Подробнее о tf.RaggedTensor см. на странице https://www.tensorflow.org/api_docs/python/tf/RaggedTensor.

При использовании expand_composites=False мы просто возвращаем RaggedTensor без изменений.

tensor = tf.ragged.constant([[3, 1, 4, 1], [], [5, 9, 2]])
tf.nest.flatten(tensor, expand_composites=False)
  [<tf.RaggedTensor [[3, 1, 4, 1], [], [5, 9, 2]]>]
  

При использовании expand_composites=True мы возвращаем тензоры-компоненты, из которых состоит представление RaggedTensor (тензоры values и row_splits).

tensor = tf.ragged.constant([[3, 1, 4, 1], [], [5, 9, 2]])
tf.nest.flatten(tensor, expand_composites=True)
  [<tf.Tensor: shape=(7,), dtype=int32, numpy=array([3, 1, 4, 1, 5, 9, 2],
                                                    dtype=int32)>,
   <tf.Tensor: shape=(4,), dtype=int64, numpy=array([0, 4, 4, 7])>]
  
Аргументы
structure Атом или вложенная структура. Обратите внимание: массивы numpy считаются атомами и не преобразуются в плоский список.
expand_composites Если значение равно true, составные тензоры, такие как tf.sparse.SparseTensor и tf.RaggedTensor, разворачиваются в тензоры-компоненты.
Возвращает
Список Python — входные данные в плоском виде.
Вызывает исключение
TypeError Объект nest является словарём с ключами, которые нельзя отсортировать, или содержит такой словарь.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/nest/flatten

Spec-Zone.ru

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