我想在JAR文件中嵌入一个预先训练的模型,然后在使用Tensorflow的Java API进行预测时使用它。我的Tensorflow版本是1.12.0。
我有使用 tf.saved_model.simple_save 在Python中导出的tensorflow模型。这会将PB文件和变量保存到导出目录。只要导出目录在本地可用,我就可以使用 SavedModelBundle.load 在Java中成功加载此模型并运行预测。
现在,我想在受限/远程环境中使用我的预测变量作为Aster Analytics数据库的自定义函数。该数据库获取一个jar文件,并在SQL调用期间运行用户定义的函数。
我的问题是 SavedModelBundle 从本地目录加载,并且没有利用文件流或类似方法来读取JAR文件中的资源。由于此数据库具有访问限制,因此我无法创建永久本地目录并将导出的文件移动到那里。同样,我无法将Tensorflow Serving或任何其他RPC / REST调用调用到外部服务器。
我不想在每个函数调用中创建一个临时目录并在其中复制导出的目录(因为它可能会留下剩余的目录,并且可能同时创建竞争条件等)
是否有任何有效的方法可以在jar文件中交付模型,然后再读取它?我希望可以使用SavedModelBundle来读取JAR资源。另外,我希望可以使用文件流读取模型图,然后使用JAR中包含的文件初始化变量。但是我也不知道该怎么办。
我感谢任何建议和/或指示。
提前谢谢。