tersorflow模型 java_Tensorflow模型导入Java

Java importGraphDef()函数仅导入计算图形(由Python代码中的tf.train.write_graph编写),它不加载训练变量的值(存储在检查点中),这就是为什么你会抱怨未初始化变量的错误。

另一方面,TensorFlow SavedModel format包含有关模型的所有信息(图形,检查点状态,其他元数据),并且在Java中使用,您希望使用SavedModelBundle.load创建使用训练变量值初始化的会话。

要从Python导出此格式的模型,您可能需要查看相关问题Deploy retrained inception SavedModel to google cloud ml engine

在您的情况下,这应该类似于Python中的以下内容:

def save_model(session, input_tensor, output_tensor):

signature = tf.saved_model.signature_def_utils.build_signature_def(

inputs = {'input': tf.saved_model.utils.build_tensor_info(input_tensor)},

outputs = {'output': tf.saved_model.utils.build_tensor_info(output_tensor)},

)

b = saved_model_builder.SavedModelBuilder('/tmp/model')

b.add_meta_graph_and_variables(session,

[tf.saved_model.tag_constants.SERVING],

signature_def_map={tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature})

b.save()并通过save_model(session, x, yhat)调用它

然后在Java中加载模型使用:

try (SavedModelBundle b = SavedModelBundle.load("/tmp/mymodel", "serve")) {

// b.session().run(...)

}希望有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值