Tensorflow variable_scope中的partitioner参数是用来做什么的?

8

tf.variable_scope有一个partitioner参数,如文档中所述。

据我了解,它用于分布式训练。有人可以详细解释一下它的正确使用方法吗?

1个回答

9
巨大的tensorflow变量可以在多台机器上进行分片(请参见此讨论)。划分器是一个机制,通过它,tensorflow分发和组装张量,以便程序的其余部分不知道这些实现细节,并以通常的方法使用张量。
您可以通过tf.get_variable来为一个变量指定划分器:

如果提供了划分器,将返回一个PartitionedVariable。将该对象作为Tensor访问,返回连接到分区轴上的碎片。

或者您可以通过tf.variable_scope为整个作用域定义默认分区器,这将影响其中定义的所有变量。
请参见tensorflow 1.3中可用的分区器列表:此页面。最简单的分区器是tf.fixed_size_partitioner,它将张量沿指定的轴进行分片。以下是一个示例用法(来自此问题):
w = tf.get_variable("weights",                                        
                    weights_shape,                                    
                    partitioner=tf.fixed_size_partitioner(num_shards, axis=0), 
                    initializer=tf.truncated_normal_initializer(stddev=0.1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接