我试图在Java中加载一个模型,该模型最初保存在java中的keras中,这样我就可以在运行在Java中的现有生产系统中进行进程中的推断。
我没有看到在Java中轻松加载Keras h5模型的方法,所以我首先尝试使用simple_save将其转换为.pb文件,然后使用simple_save的默认标记加载它。我尝试使用freeze_session例程和tf.train.write_graph直接保存图形,但也有相同的错误。
下面是将我的模型保存到.pb文件的代码
# my model has two input tensors and one output tensor
inputs = {'input_1': model.inputs[0], 'input_2' : model.inputs[1]}
outputs = {'output_1' : model.outputs[0]}
tf.saved_model.simple_save(K.get_session(), 'output_dir', inputs=inputs, outputs=outputs)下面是用于加载模型的Java代码,使用saved_model的默认标记:
SavedModelBundle model = SavedModelBundle.load("output_dir", "serve");这将导致错误:
线程“主”org.tensorflow.TensorFlowException:中的异常无法在提供的导出目录路径: output_dir中找到SavedModel .pb或.pbtxt
知道我做错了什么吗?我知道simple_save是不受欢迎的,但我只是想让任何事情都能在这一点上发挥作用。
发布于 2019-07-11 15:08:48
我查看了加载模型的本机源代码,结果发现有一个硬编码的文件名"saved_model.pb",或者它在目录中所期望的文本版本"saved_model.pbtxt“(在我看过的文档中没有指定)。
https://stackoverflow.com/questions/56859956
复制相似问题