Spec-Zone.ru › TensorFlow 2.9

tf.nest.flatten

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

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

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

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

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

tf.compat.v1.nest.flatten

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

Обратитесь к tf.nest для определения структуры.

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

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

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

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

Примеры:

  1. Python-словарь (отсортированный по ключу):
dict = { "key3": "value3", "key1": "value1", "key2": "value2" }
tf.nest.flatten(dict)
  ['value1', 'value2', 'value3']
  
  1. Для вложенной 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]
  
  1. Для вложенного словаря словарей:
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]
  
  1. Массив NumPy (не будет уплощаться):
array = np.array([[1, 2], [3, 4]])
tf.nest.flatten(array)
      [array([[1, 2],
              [3, 4]])]
  
  1. 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)>]
  
  1. 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 Структура 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/versions/r2.9/api_docs/python/tf/nest/flatten

Spec-Zone.ru

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