如何在加载的张量流模型

时间:2017-06-20 21:33:24

标签: java tensorflow

假设我在给定配置上训练我的模型有GPU而不是我想使用此模型进行预测,所以我使用模型构建器保存它(构建预测方法签名)。我想使用这个模型在没有GPU可用的java环境中进行预测,我想对在多个CPU上并行化它们的操作进行一些调整。

如何使用java api实现这一目标? 我发现如果我构建新的操作我可以使用setDevice为它分配设备,但是如何从加载的模型中更改现有的操作凸轮?可能吗?是否可以使用java api?

或者在这种情况下克服的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

一种选择是在从Python培训流程导出模型时清除设备。这相当于在使用SavedModelBuilder时设置clear_devices=True

关于"一些调整操作以在多个CPU上并行化它们" - Java API底层的TensorFlow运行时应该为您自动执行 - 尽可能并行调度操作,并在可能的情况下使用多个线程进行单独操作。

如果您真的想要控制ConfigProto指定的配置,可以使用ConfigProto.Builder Java classorg.tensorflow:proto maven包)构建相应的proto,序列化并提供给它Session构造函数,使用类似这样的东西:

ConfigProto config = ConfigProto.newBuilder()
  .setInterOpParallelismThreads(1)
  .build();
try (Session sess = new Session(graph, config.toByteArray())) {
  System.out.println("Created Session with: " + config.toString());
}

希望有所帮助。