tf.variable_scope
具有documentation中提到的partitioner
参数。
据我所知,它用于分布式训练。有谁能更详细地解释一下它的正确用法吗?
最佳答案
巨大的tensorflow变量可以在多台机器上切分(参见this discussion)。partitioner是一种机制,通过它,tensorflow将张量分配和组装回来,这样程序的其余部分就不知道这些实现细节,而以通常的方式使用张量。
您可以通过tf.get_variable
为每个变量指定分区器:
如果提供了partitioner,则返回partitionedvariable。将此对象作为张量访问将返回沿分区轴连接的碎片。
或者通过tf.variable_scope
为整个作用域定义默认分区器,这将影响在其中定义的所有变量。
参见TensorFlow 1.3中this page上的可用分区列表。最简单的是tf.fixed_size_partitioner
,它沿着指定的轴切分张量。下面是一个示例用法(来自this question):
w = tf.get_variable("weights",
weights_shape,
partitioner=tf.fixed_size_partitioner(num_shards, axis=0),
initializer=tf.truncated_normal_initializer(stddev=0.1))