通過將 func
應用於 structure
中的每個原子來創建新結構。
用法
tf.nest.map_structure(
func, *structure, **kwargs
)
參數
-
func
接受與結構一樣多的參數的可調用對象。 -
*structure
原子或嵌套結構。 -
**kwargs
有效的關鍵字參數是:check_types
:如果設置為True
(默認),則結構中的迭代類型必須相同(例如map_structure(func, [1], (1,))
引發TypeError
異常)。要允許這樣做,請將此參數設置為False
。請注意,具有相同名稱和字段的命名元組始終被認為具有相同的淺層結構。expand_composites
:如果設置為True
,則複合張量如tf.sparse.SparseTensor
和tf.RaggedTensor
將擴展為它們的分量張量。如果False
(默認),則複合張量不展開。
返回
-
與
structure[0]
具有相同數量的新結構,其原子對應於func(x[0], x[1], ...)
其中x[i]
是structure[i]
中相應位置的原子。如果有不同的結構類型並且check_types
是False
,則將使用第一個結構的結構類型。
拋出
-
TypeError
如果func
不可調用,或者結構不通過深度樹相互匹配。 -
ValueError
如果沒有提供結構或者結構在類型上不匹配。 -
ValueError
如果提供了錯誤的關鍵字參數。
有關結構的定義,請參閱tf.nest。
應用 func(x[0], x[1], ...)
其中 x[i] 枚舉 structure[i]
中的所有原子。 structure
中的所有項目必須具有相同的數量,並且返回值將包含具有相同結構布局的結果。
例子:
- 一個 Python 字典:
a = {"hello":24, "world":76}
tf.nest.map_structure(lambda p:p * 2, a)
{'hello':48, 'world':152}
- 多個 Python 字典:
d1 = {"hello":24, "world":76}
d2 = {"hello":36, "world":14}
tf.nest.map_structure(lambda p1, p2:p1 + p2, d1, d2)
{'hello':60, 'world':90}
- 一個 Python 列表:
a = [24, 76, "ab"]
tf.nest.map_structure(lambda p:p * 2, a)
[48, 152, 'abab']
- 標量:
tf.nest.map_structure(lambda x, y:x + y, 3, 4)
7
- 空結構:
tf.nest.map_structure(lambda x:x + 1, ())
()
- 檢查可迭代的類型:
s1 = (((1, 2), 3), 4, (5, 6))
s1_list = [[[1, 2], 3], 4, [5, 6]]
tf.nest.map_structure(lambda x, y:None, s1, s1_list)
Traceback (most recent call last):
TypeError:The two structures don't have the same nested structure
- 類型檢查設置為 False:
s1 = (((1, 2), 3), 4, (5, 6))
s1_list = [[[1, 2], 3], 4, [5, 6]]
tf.nest.map_structure(lambda x, y:None, s1, s1_list, check_types=False)
(((None, None), None), None, (None, None))
相關用法
- Python tf.nest.is_nested用法及代碼示例
- Python tf.nest.assert_same_structure用法及代碼示例
- Python tf.nest.flatten用法及代碼示例
- 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.map_structure。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。