我目前正在尝试使用分布式张量流。
我正在使用 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
实现这一点(例如如何处理输入函数?)。
有没有人有这方面的经验或能提供一个有效的例子?
答案 0 :(得分:2)
首先,您应该停止使用tf.contrib.learn.Estimator
支持tf.estimator.Estimator
,因为contrib
是an 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中找到完整的工作示例。