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 для определения структуры.

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

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

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

Пользователи не должны изменять какие-либо коллекции, используемые в 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: Это составной тензор, представление которого состоит из плоского списка 'значений' и списка '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 (тензоры значений и 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 Структура или содержит словарь с несортируемыми ключами.

© 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