如何重写张量流图以将CPU用于所有操作

马尔钦·科兹洛夫斯基(MarcinKozłowski)

我已经在多GPU和CPU设置上训练了网络,并将结果模型保存为tensorflow SavedModel然后,我还有另一个脚本,可以加载生成的模型并运行所需的操作以进行预测,即对模型进行推断。这可以在训练模型的相同设置上进行。

但是,我需要将模型部署为在具有1个CPU且没有GPU的设备上运行。当我尝试运行相同的脚本时,出现以下错误:

InvalidArgumentError(请参阅上面的回溯):从检查点还原失败。这很可能是由于当前图形与来自检查点的图形之间的不匹配。请确保您没有更改基于检查点的预期图形。原始错误:

无法为操作default_policy_1 / tower_1 / variable分配设备:已将节点default_policy_1 / tower_1 / variable(在restore.py:56处定义)明确分配给/ device:GPU:0,但可用设备为[/ job:localhost / replica:0 / task:0 / device:CPU:0,/ job:localhost /副本:0 / task:0 / device:XLA_CPU:0]。确保设备规格引用的是有效设备。所请求的设备似乎是GPU,但未启用CUDA。[[node default_policy_1 / tower_1 / Variable(在restore.py:56处定义)]]

这看起来很有希望,但是代码根本没有改变我的图,删除了0个节点-删除了要在CPU上运行的操作图tensorflow

通常,删除所有不在CPU上运行的操作似乎并不明智。

我尝试将所有内容包装在一个with tf.device('CPU:0')块中,以及使用config = tf.ConfigProto(device_count={'GPU': 0})但都没有改变错误。

相关代码:

from tensorflow.python.saved_model import loader

input_tensor_key_feed_dict = {'observations': np.array([[23]]), 'prev_action': np.array([0]),
                              'prev_reward': np.array([0]), 'is_training': False}

config = tf.ConfigProto(device_count={'GPU': 0})
with tf.device('CPU:0'):
    with session.Session(None, graph=ops_lib.Graph(), config=config) as sess:
        
        loader.load(sess, tag_set.split(','), saved_model_dir) #error occurs here
        
        outputs = sess.run(output_tensor_names_sorted, feed_dict=inputs_feed_dict)
        for i, output in enumerate(outputs):
            output_tensor_key = output_tensor_keys_sorted[i]
            print('Result for output key %s:\t%s' % (output_tensor_key, output))
爱德华多·G

我将初始化一个没有设备规格的新模型,然后仅加载模型变量,因为它将是带有tf.Saver()的标准训练检查点。在这一点上,您应该能够保存SavedModel的版本,tensorflow可以为该版本决定将操作放置在何处。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将keras预测作为张量图用于张量流

如何在张量流中重写此操作?

查找张量流操作所依赖的所有变量

如何强制张量流使用所有可用的GPU?

如何从张量流中的双向rnn获取所有状态

无法将数据输入张量流图

如何将张量流中的缺失应用于多维张量?

如何找出冻结的张量流图的正确输入和输出操作?

将张量映射到张量流中的操作

张量流图节点名称与操作名称不匹配

张量流使用所有GPU内存

将均值过滤器应用于所有图像,同时通过utf代码调整其大小。处理张量流

复制张量流图

如何在张量流中操作多维张量?

如何将具有自定义keras图层(.h5)的keras模型冻结为张量流图(.pb)?

如何将操作添加到在函数内部分布和定义的张量流图中?

操作系统如何将所有内核用于我的应用程序?

我应该如何检查张量流张量中的所有数字是否全部为二进制

如何将张量流张量切成多个

如何将张量映射到张量流中的索引

如何构建包含张量流中矩阵的所有对行的矩阵

如何修复张量流“ InvalidArgumentError:所有输入的形状必须匹配”

如何在张量流中查看架构元数据的所有可能选项?

如何对张量流中的并非所有变量进行梯度下降

如何有效跟踪张量流张量的历史?

如何使用张量流构建多输入图?

合并张量流图时如何保留占位符名称?

如何从内存缓冲区加载张量流图

如何在张量流中还原局部图?