tensorflow摘要操作可以分配给gpu

时间:2017-08-25 07:02:09

标签: tensorflow

这是我的代码的一部分。

with tf.Graph().as_default(), tf.device('/cpu:0'):
    global_step = tf.get_variable(
        'global_step',
        [],
        initializer = tf.constant_initializer(0),
    writer = tf.summary.FileWriter(logs_path,graph=tf.get_default_graph())

    with tf.device('/gpu:0'):
        tf.summary.scalar('learning_rate', INITIAL_LEARNING_RATE)
        summary_op = tf.summary.merge_all()

我跑的时候。我会得到以下错误:

  

InvalidArgumentError(参见上面的回溯):无法为操作分配设备' learning_rate':无法满足显式设备规范' / device:GPU:0'因为没有    支持GPU设备的内核可用。            [[Node:learning_rate = ScalarSummary [T = DT_FLOAT,_device =" / device:GPU:0"](learning_rate / tags,learning_rate / values)]]

如果我将这2个操作移动到tf.device(" / cpu:0")设备范围,它将起作用。

            tf.summary.scalar('learning_rate', INITIAL_LEARNING_RATE)
        summary_op = tf.summary.merge_all()

我谷歌吧。关于使用" allow_soft_placement = True"有许多建议。但我认为这个解决方案基本上是自动更改设备范围。所以我的问题是: 为什么这两个操作不能分配给gpu?是否有任何文件我可以查看哪些操作可以或不能分配给gpu? 任何建议都是受欢迎的。

2 个答案:

答案 0 :(得分:1)

你的错误说明了一切:

  

无法满足显式设备规范'/ device:GPU:0',因为没有支持GPU设备的内核

该操作(在您使用的tensorflow版本中)没有GPU实现,因此必须发送到CPU设备。

答案 1 :(得分:1)

您无法将摘要操作分配给GPU,因为它没有意义。

简而言之,GPU执行并行操作。摘要只不过是一个文件,每次在其上写入时都会追加新行。这是一个顺序操作,与GPU能够执行的操作没有任何共同之处。