我正在尝试使用训练有素的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。我希望我能正确解释
答案 0 :(得分:2)
看看golang.org/x/tools/godoc/vfs
或者说,
github.com/spf13/afero
结合go-bindata
或任何其他提供的套餐
对于嵌入文件内容,它可以用来抽象出去
类文件系统树(目录层次结构)。
请注意,这种方法假定" tensorflow"事情是能够的 使用这种虚拟化。相反,如果它坚持使用路径 在一个真正的文件系统上,你需要以某种方式解决这个问题。
一种方法是将存档文件嵌入到您的可执行文件中,
然后在程序初始化阶段将其解压缩到临时目录下。
阅读io/ioutil.TempDir
。