具有模型并行执行的tf.Estimator的示例

时间:2017-10-27 09:40:32

标签: machine-learning tensorflow parallel-processing deep-learning distributed-computing

我目前正在尝试使用分布式张量流。 我正在使用 String viewQuery="SELECT * FROM shop_information where storeName=:storeName and ownerName=:ownerName"; 类(自定义模型函数)和tf.estimator.Estimator并对其进行管理以获得并行执行的工作数据。

但是,我现在想尝试模型并行执行。除了Implementation of model parallelism in tensorflow之外,我无法找到任何示例。 但我不知道如何使用tf.contrib.learn.Experiment实现这一点(例如如何处理输入函数?)。

有没有人有这方面的经验或能提供一个有效的例子?

1 个答案:

答案 0 :(得分:2)

首先,您应该停止使用tf.contrib.learn.Estimator支持tf.estimator.Estimator,因为contriban experimental module,而且已经毕业到核心API的类(例如es { {1}})自动弃用。

现在,回到您的主要问题,您可以创建分布式模型并通过tf.estimator.Estimator.__init__Estimator参数传递它。

model_fn

上面的模型定义了6个带有def my_model(features, labels, mode): net = features[X_FEATURE] with tf.device('/device:GPU:1'): for units in [10, 20, 10]: net = tf.layers.dense(net, units=units, activation=tf.nn.relu) net = tf.layers.dropout(net, rate=0.1) with tf.device('/device:GPU:2'): logits = tf.layers.dense(net, 3, activation=None) onehot_labels = tf.one_hot(labels, 3, 1, 0) loss = tf.losses.softmax_cross_entropy(onehot_labels=onehot_labels, logits=logits) optimizer = tf.train.AdagradOptimizer(learning_rate=0.1) train_op = optimizer.minimize(loss, global_step=tf.train.get_global_step()) return tf.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op) [...] classifier = tf.estimator.Estimator(model_fn=my_model) 展示位置的图层和3个带有{​​{1}}展示位置的其他图层。 /device:GPU:1函数的返回值应为EstimatorSpec个实例。可以在tensorflow examples中找到完整的工作示例。