2024-10-06 10:21:17 发布
网友
在tensorflow2.0中使用多gpu进行培训时,perreplica将减少以下代码:
strategy.reduce(tf.distribute.ReduceOp.SUM, per_replica_losses, axis=None)
但是,如果我只想收集(没有'sum reduce'或'mean reduce')所有gpu的预测到一个张量:
简而言之,您可以将PerReplicaresult转换为如下张量的元组:
PerReplica
tensors_tuple = per_replica_predicitions.values
返回的tensors_tuple将是来自每个副本/设备的predictions的元组:
tensors_tuple
predictions
这个元组中元素的数量由分布式策略可用的设备决定。特别是,如果策略在单个副本/设备上运行,则策略。实验性的?运行?2与直接调用train_step函数相同(张量或张量列表由您的train_step决定)。所以您可能需要这样编写代码:
train_step
per_replica_losses, per_replica_predicitions = strategy.experimental_run_v2(train_step, args=(dataset_inputs,)) if strategy.num_replicas_in_sync > 1: predicition_tensors = per_replica_predicitions.values else: predicition_tensors = per_replica_predicitions
PerReplica是一个封装分布式运行结果的类对象。您可以找到它的定义here,还有更多的属性/方法供我们操作PerReplica对象。在
简而言之,您可以将
PerReplica
result转换为如下张量的元组:返回的
^{pr2}$tensors_tuple
将是来自每个副本/设备的predictions
的元组:这个元组中元素的数量由分布式策略可用的设备决定。特别是,如果策略在单个副本/设备上运行,则策略。实验性的?运行?2与直接调用train_step函数相同(张量或张量列表由您的
train_step
决定)。所以您可能需要这样编写代码:PerReplica
是一个封装分布式运行结果的类对象。您可以找到它的定义here,还有更多的属性/方法供我们操作PerReplica
对象。在相关问题 更多 >
编程相关推荐