Tensorflow variable_scope中的分区器参数用于什么?

时间:2017-11-08 02:59:26

标签: python tensorflow sharding partition

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

据我了解,它用于分布式培训。任何人都可以更详细地解释它的正确用法吗?

1 个答案:

答案 0 :(得分:4)

可以在多台机器上分割巨大的张量流变量(参见Plunker)。分区器是一种机制,张量流通过该机制分配和组装张量,因此程序的其余部分不知道这些实现细节,并且以通常的方式使用张量。

您可以通过this discussion指定每个变量的分区程序:

  

如果提供了分区程序,则返回PartitionedVariable。以Tensor的形式访问此对象将返回沿分区轴连接的分片。

或者您通过tf.get_variable为整个范围定义默认分区程序,这将影响其中定义的所有变量。

请参阅tf.variable_scope上tensorflow 1.3中的可用分区列表。最简单的是tf.fixed_size_partitioner,它沿指定轴分割张量。以下是一个示例用法(来自this page):

w = tf.get_variable("weights",                                        
                    weights_shape,                                    
                    partitioner=tf.fixed_size_partitioner(num_shards, axis=0), 
                    initializer=tf.truncated_normal_initializer(stddev=0.1))