如何在Tensorflow'中加载使用“saver.save”保存的模型;s Java API
我正在尝试使用新的JavaAPI从磁盘读取模型 使用Tensorflow的Java API演示了如何读取既有图形定义又有参数权重的如何在Tensorflow'中加载使用“saver.save”保存的模型;s Java API,java,tensorflow,Java,Tensorflow,我正在尝试使用新的JavaAPI从磁盘读取模型 使用Tensorflow的Java API演示了如何读取既有图形定义又有参数权重的.pb模型文件 在Python方面,Tensorflow建议使用Saver对象将模型保存到磁盘。它创建了一个.meta文件,该文件具有权重的定义和.data文件。在Python中,我使用new\u saver=tf.train.import\u meta\u图(var\u文件名) 新建\u saver.restore(sess,型号\u文件名)从磁盘读取型号 如何在J
.pb
模型文件
在Python方面,Tensorflow建议使用Saver
对象将模型保存到磁盘。它创建了一个.meta
文件,该文件具有权重的定义和.data
文件。在Python中,我使用new\u saver=tf.train.import\u meta\u图(var\u文件名)
新建\u saver.restore(sess,型号\u文件名)
从磁盘读取型号
如何在Java API中实现这一点?该类可能正是您想要的。特别是,SavedModelBundle.load()
将返回一个会话,您可以使用该会话执行保存的模型
请注意,这个特性是最近添加到JavaAPI中的,因此二进制版本中还不存在它,因此您必须等到TensorFlow 1.1发布后才能使用 我正在做类似的事情,使用python接口在hadoop集群上训练模型,并使用模型和学到的参数在java中进行预测
- 保存模型的步骤 您必须使用SavedModelBuilder。在这里您可以找到指导: 您可以使用他们的mnist示例构造函数签名
SavedModelBundle load = SavedModelBundle.load(modelDir, "serve");
float[][] resultArray;
try (Graph g = load.graph()) {
try (Session s = load.session();
Tensor result = s.runner().feed("data", data).fetch("prediction").run().get(0)) {
resultArray = result.copyTo(new float[10][1]);
}
}
load.close();
return resultArray;
要获取提要和获取操作的名称,可以打印签名,并使用输入和输出值名称
print(prediction_signature)
太好了,谢谢。我目前的解决方案是使用
freeze\u graph
保存图形定义和权重,然后用Java读取。这门课看起来很有前途。我会等到正式发布后再在我的代码中尝试,