從給定結構返回一個平麵列表。
用法
tf.nest.flatten(
structure, expand_composites=False
)
參數
-
structure
一個原子或嵌套結構。請注意,numpy 數組被認為是原子,不會被展平。 -
expand_composites
如果為真,則複合張量(例如tf.sparse.SparseTensor
和tf.RaggedTensor
)將擴展為它們的分量張量。
返回
- Python 列表,輸入的扁平化版本。
拋出
-
TypeError
嵌套是或包含具有不可排序鍵的字典。
有關結構的定義,請參閱tf.nest。
如果結構是原子,則返回 single-item 列表:[結構]。
這與 nest.pack_sequence_as
方法相反,該方法接受一個扁平列表並將其重新打包到嵌套結構中。
在 dict 實例的情況下,序列由值組成,按鍵排序以確保確定性行為。對於 OrderedDict 實例也是如此:它們的序列順序被忽略,而是使用鍵的排序順序。 nest.pack_sequence_as
遵循相同的約定。這會在 dicts 和 OrderedDicts 被展平後正確地重新打包它們,並且還允許展平 OrderedDict 然後使用相應的普通 dict 重新打包它,反之亦然。具有不可排序鍵的字典不能被展平。
在此函數運行時,用戶不得修改嵌套中使用的任何集合。
例子:
- Python dict(按鍵排序):
dict = { "key3":"value3", "key1":"value1", "key2":"value2" }
tf.nest.flatten(dict)
['value1', 'value2', 'value3']
- 對於嵌套的 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]
- 對於字典的嵌套字典:
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]
- Numpy 數組(不會展平):
array = np.array([[1, 2], [3, 4]])
tf.nest.flatten(array)
[array([[1, 2],
[3, 4]])]
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)>]
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 表示的組件張量(值和 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])>]
相關用法
- Python tf.nest.is_nested用法及代碼示例
- Python tf.nest.assert_same_structure用法及代碼示例
- Python tf.nest.map_structure用法及代碼示例
- Python tf.nest.pack_sequence_as用法及代碼示例
- Python tf.nn.embedding_lookup_sparse用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.set_weights用法及代碼示例
- Python tf.nn.dropout用法及代碼示例
- Python tf.nn.gelu用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.set_weights用法及代碼示例
- Python tf.no_gradient用法及代碼示例
- Python tf.nn.embedding_lookup用法及代碼示例
- Python tf.numpy_function用法及代碼示例
- Python tf.nn.RNNCellDeviceWrapper.get_weights用法及代碼示例
- Python tf.nn.local_response_normalization用法及代碼示例
- Python tf.nn.scale_regularization_loss用法及代碼示例
- Python tf.nn.RNNCellResidualWrapper.add_loss用法及代碼示例
- Python tf.nn.max_pool用法及代碼示例
- Python tf.nn.RNNCellDropoutWrapper.set_weights用法及代碼示例
- Python tf.nn.l2_loss用法及代碼示例
- Python tf.nn.log_softmax用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.nest.flatten。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。