Tensorflow contrib.learn.Estimator多GPU

Tensorflow contrib.learn.Estimator多GPU,tensorflow,skflow,Tensorflow,Skflow,为了使用contrib.learn.Estimator进行多GPU培训,我尝试在我的模型中指定GPU分配 在伪代码中: def model_fn(X, y): with tf.device('/gpu:1'): ... various tensorflow ops for model ... return predictions, loss, train_op 没有tf.device('/gpu:1')调用,一切正常,但使用它时我遇到以下错误: Inval

为了使用contrib.learn.Estimator进行多GPU培训,我尝试在我的模型中指定GPU分配

在伪代码中:

def model_fn(X, y):
    with tf.device('/gpu:1'):
       ... various tensorflow ops for model ...

       return predictions, loss, train_op
没有tf.device('/gpu:1')调用,一切正常,但使用它时我遇到以下错误:

InvalidArgumentError (see above for traceback): Cannot assign a device to
node 'save/ShardedFilename_1': Could not satisfy explicit device
specification '/device:GPU:1' because no supported kernel 
for GPU devices is available.
我不相信我自己正在将有问题的op添加到图中,而是通过估计器的快照功能注入它

我相信解决方案是设置allow_soft_placement=True,这样非GPU功能将落在CPU上,但在处理contrib.learn.Estimator时,我并不清楚这是如何暴露出来的

我看到该选项通常在ConfigProto中设置&传递给会话,但我一直在使用估计器的功能为我管理会话。我应该控制会话的创建,还是缺少一个参数来完成这个任务


非常感谢您的建议。

随着评估师离开Tensorflow 1.0中的contrib,这是固定的。

随着评估师离开Tensorflow 1.0中的contrib,这是固定的。

问题域:问题域: