Tensorflow,还原特定设备中的变量

Tensorflow,还原特定设备中的变量,tensorflow,Tensorflow,也许我的问题有点天真,但我真的没有在tensorflow文档中找到任何东西 我有一个训练有素的tensorflow模型,其中变量放在GPU中。现在我想恢复这个模型,并使用CPU进行测试 如果我通过“tf.train.Saver.restore”执行此操作,如示例所示: saver=tf.train.import\u meta\u graph(“/tmp/graph.meta”) saver.restore(会话“/tmp/model.ckp”) 我有以下理由: InvalidArgumen

也许我的问题有点天真,但我真的没有在tensorflow文档中找到任何东西

我有一个训练有素的tensorflow模型,其中变量放在GPU中。现在我想恢复这个模型,并使用CPU进行测试

如果我通过“tf.train.Saver.restore”执行此操作,如示例所示:

saver=tf.train.import\u meta\u graph(“/tmp/graph.meta”)
saver.restore(会话“/tmp/model.ckp”)

我有以下理由:


InvalidArgumentError:无法将设备分配给节点“b_fc8/b_fc8/Adam_1”:无法满足显式设备规范“/设备:GPU:0”,因为在此过程中未注册与该规范匹配的设备;可用设备:/job:localhost/replica:0/task:0/cpu:0

如何在
CPU
中恢复这些变量


谢谢

使用
清除设备
标志,即

saver = tf.train.import_meta_graph("/tmp/graph.meta", clear_devices=True)

我正在使用tensorflow 0.12和
clear\u devices=True
tf。设备('/cpu:0')
无法与我一起工作(saver.restore仍在尝试将变量分配给/gpu:0)

我真的需要将所有东西都强制到/cpu:0,因为我加载了一些无论如何都不适合GPU内存的模型。这里有两种将所有内容强制到/cpu的方法:0

  • 设置
    os.environ['CUDA\u VISIBLE\u DEVICES']=''
  • 使用ConfigProto的设备计数,如
    tf.Session(config=tf.ConfigProto(设备计数={“GPU”:0,“CPU”:1}))

  • 谢谢,实际上这个资源可以从
    0.11
    版本获得。我正在使用0.10。@TiagoFreitasPereira,然后您可以加载GraphDef,遍历节点,清除字段“device”,然后将此GraphDef导入graphalso,您可以在文本编辑器中打开
    graph.pbtxt
    ,删除以
    设备: