我目前正在探索在Google ML Engine上部署模型。起初,我使用TensorFlow 1.1.0开发了一个模型,因为它存在最新版本(当问到这个问题时)。但是,事实证明,GCP上TensorFlow的最高支持版本是1.0.1。
问题是,以前当我使用TensorFlow 1.1.0时,SavedModelBuilder
会将模型正确地保存为SavedModel
及其变量位于variables/
目录下。但是,当我切换到TensorFlow 1.0.1时,它的工作方式不同:SavedModel
文件已创建,但在variables/
下没有创建任何文件,因此不能仅使用构建模型SavedModel
文件(variables/
下的文件丢失)。
这是一个已知的错误吗?或者我应该做些什么来使TensorFlow 1.0.1上的SavedModelBuilder
像TensorFlow 1.1.0那样工作?
谢谢。
编辑,更详细:
实际上,我的模型中没有明确的tf.Variable
。但是,存在多个tf.contrib.lookup.MutableDenseHashTable
并且它们在TensorFlow 1.1.0中正确导出,但在TensorFlow 1.0.1中没有导出(因为1.0.1中根本没有导出变量)。
答案 0 :(得分:0)
在commit中引入了在没有变量的情况下在TensorFlow中保存和加载模型的能力,这只在1.1.0中可用。
作为一种解决方法,您可以在模型中创建一个虚拟(未使用)变量。
修改强>
基于OP更新,听起来有一个MutableDenseHashTable
未被保存。
您可以在CloudML Engine上运行TensorFlow 1.1,但需要手动将其添加为附加包。
首先,下载TensorFlow 1.1 wheel。然后将其指定为您的培训工作的附加包,例如,
gcloud ml-engine jobs submit training my_job \
--module-name trainer.task \
--staging-bucket gs://my-bucket \
--package-path /my/code/path/trainer \
--packages tensorflow-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl