在Go可执行文件中包含完整目录结构,而不是单个文件

时间:2018-03-07 09:52:22

标签: go tensorflow

我正在尝试使用训练有素的tensorflow模型创建可执行程序。但是,我已经意识到编译的Go脚本需要模型目录路径作为参数。为了避免这种情况,我想将模型包含在Go可执行文件中并将它们一起编译。我一直在查看go-bindata但在这种情况下不起作用,因为函数tf.LoadSavedModel采用目录路径来加载模型,而不是实际的模型文件。

你知道怎么做吗?

编辑:

tf.LoadSavedModel函数(https://godoc.org/github.com/tensorflow/tensorflow/tensorflow/go#LoadSavedModel)需要加载模型的目录路径。它无法处理单个文件,因此,为什么go-bindata(这个问题的解决方案)在这种情况下不起作用。 tf.LoadSavedModel使用C中的函数来加载目录中的文件,因此无法将文件直接提供给Go。我希望我能正确解释

1 个答案:

答案 0 :(得分:2)

看看golang.org/x/tools/godoc/vfs或者说, github.com/spf13/afero

结合go-bindata或任何其他提供的套餐 对于嵌入文件内容,它可以用来抽象出去 类文件系统树(目录层次结构)。

请注意,这种方法假定" tensorflow"事情是能够的 使用这种虚拟化。相反,如果它坚持使用路径 在一个真正的文件系统上,你需要以某种方式解决这个问题。

一种方法是将存档文件嵌入到您的可执行文件中, 然后在程序初始化阶段将其解压缩到临时目录下。 阅读io/ioutil.TempDir