我正在使用keras 1.2和tensorflow 1.0.0后端 .
我有一个函数从json加载预先校准的模型,然后从hdf5文件加载其权重 .
def load():
model = model_from_json(open(model_path).read())
model.load_weights(model_weights_path)
此函数,更确切地说是对 load_weights
的调用导致以下异常:
RuntimeError: The Session graph is empty. Add operations to the graph before calling run()
我想知道这是否是由于我在模块的开头设置了tensorflow种子以获得再现性的这些行:
tf.set_random_seed(123) # To set Tensorflow seed
sess = tf.Session()
keras.backend.set_session(sess)
似乎keras会话不会自动将加载的模型设置为与会话关联的图形,因此无法初始化权重 .
避免异常的任何解释和解决方法?
2 回答
我几乎使用与你相同的代码,它对我有用 .
事实上,在加载模型时,Keras似乎不尊重set_session设置的会话 .
尝试强制Keras使用Tensorflow的上下文管理器的特定会话:
如果Keras仍然抱怨,请预定义图形(
graph=tf.Graph()
)并强制model.load_weights通过引入额外的with
语句来使用它: