用法
batch_reduce_to(
reduce_op, value_destination_pairs, options=None
)
參數
-
reduce_op
一個tf.distribute.ReduceOp
值,指定如何組合值。允許使用枚舉的字符串表示,例如"SUM"、"MEAN"。 -
value_destination_pairs
一係列(值,目的地)對。有關說明,請參見tf.distribute.Strategy.reduce_to
。 -
options
一個tf.distribute.experimental.CommunicationOptions
。執行集體操作的選項。如果tf.distribute.Strategy
在構造函數中采用一個,這將覆蓋默認選項。有關選項的詳細信息,請參閱tf.distribute.experimental.CommunicationOptions
。
返回
-
減少值的列表,在
value_destination_pairs
中每對一個。
將多個 reduce_to
調用合並為一個以加快執行速度。
類似於 reduce_to
,但接受 (value, destinations) 對的列表。它比單獨減少每個值更有效。
此 API 目前隻能在cross-replica 上下文中調用。其他減少副本值的變體是:
tf.distribute.StrategyExtended.reduce_to
:此 API 的非批處理版本。tf.distribute.ReplicaContext.all_reduce
:此 API 在副本上下文中的對應項。它支持批處理和非批處理all-reduce。tf.distribute.Strategy.reduce
:在cross-replica 上下文中減少到主機的更方便的方法。
有關詳細信息,請參閱reduce_to
。
@tf.function
def step_fn(var):
def merge_fn(strategy, value, var):
# All-reduce the value. Note that `value` here is a
# `tf.distribute.DistributedValues`.
reduced = strategy.extended.batch_reduce_to(
tf.distribute.ReduceOp.SUM, [(value, var)])[0]
strategy.extended.update(var, lambda var, value:var.assign(value),
args=(reduced,))
value = tf.identity(1.)
tf.distribute.get_replica_context().merge_call(merge_fn,
args=(value, var))
def run(strategy):
with strategy.scope():
v = tf.Variable(0.)
strategy.run(step_fn, args=(v,))
return v
run(tf.distribute.MirroredStrategy(["GPU:0", "GPU:1"]))
MirroredVariable:{
0:<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=2.0>,
1:<tf.Variable 'Variable/replica_1:0' shape=() dtype=float32, numpy=2.0>
}
run(tf.distribute.experimental.CentralStorageStrategy(
compute_devices=["GPU:0", "GPU:1"], parameter_device="CPU:0"))
<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=2.0>
run(tf.distribute.OneDeviceStrategy("GPU:0"))
<tf.Variable 'Variable:0' shape=() dtype=float32, numpy=1.0>
相關用法
- Python tf.compat.v1.distribute.StrategyExtended.colocate_vars_with用法及代碼示例
- Python tf.compat.v1.distribute.StrategyExtended.non_slot_devices用法及代碼示例
- Python tf.compat.v1.distribute.StrategyExtended.update用法及代碼示例
- Python tf.compat.v1.distribute.StrategyExtended.reduce_to用法及代碼示例
- Python tf.compat.v1.distribute.StrategyExtended.call_for_each_replica用法及代碼示例
- Python tf.compat.v1.distribute.StrategyExtended.variable_created_in_scope用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.run用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.make_input_fn_iterator用法及代碼示例
- Python tf.compat.v1.distribute.Strategy用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.scope用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.Strategy.reduce用法及代碼示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.OneDeviceStrategy用法及代碼示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_distribute_dataset用法及代碼示例
- Python tf.compat.v1.distribute.OneDeviceStrategy.scope用法及代碼示例
- Python tf.compat.v1.distribute.experimental.TPUStrategy.experimental_make_numpy_dataset用法及代碼示例
- Python tf.compat.v1.distribute.OneDeviceStrategy.experimental_distribute_dataset用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.distribute.StrategyExtended.batch_reduce_to。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。