起因
在本地封装后调试Tensorflow时,没有出现问题。但是上了服务器后,出现了下面这个错误。
TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("keras_learning_phase:0", shape=(), dtype=bool) is not an element of this graph.
我的封装是一个main函数直接调用整个工程,写了一个单例,服务器端每次接受到请求,调用这个接口即可。类似以下
#!/usr/bin/env python
# encoding: utf-8
from app import model
def main(json_str):
result = model.predict(son_str)
return result
报错原因
这个报错的原因可以说是Tensorflow自身的一个小bug(说是Temsorflow自身bug,因为是很多人都遇到过,且处理较久吧,哈哈哈哈)。起因主要是,Tensorflow的图Graph是动态的,对于图的理解,可以理解为一块区域,类似c++的命名空间。调用顺序这样会出错:1.你在服务器中第一次调用,生成的model和要推导的东西都在一块区域A中。所以不会出错,此时服务器把我的model保存在区域A中。2第二次推导,生成的需要推导的内容因为你没有固定图Graph,所以服务器把他放进了区域B中,这样就导致了需要推导的内容和模型不在一块区域中&