如何使用Keras加载tf.keras模型

时间:2019-05-01 15:02:38

标签: tensorflow keras

我一直在使用Tensorflow 1.12.0中的keras模块来训练和保存模型。我最近遇到了一个看似有用的库,用于可视化权重/输出,但是它们要求将模型作为Keras模型加载。尝试使用keras加载我的tf.keras模型时遇到错误,并希望有人可以提供解决方案。 Python版本3.5.2,Keras版本2.2.4。

我已经为GlorotUniform定义了自定义对象,因为keras无法识别该初始化程序。然后,当我尝试加载模型时,得到一个TypeError

# This works
model = tf.keras.models.load_model('./densenet_model.h5')

# This does not work
model = keras.models.load_model('./densenet_model.h5', custom_objects={"GlorotUniform": tf.keras.initializers.glorot_uniform})

# This is the error that happens
TypeError: tuple indices must be integers or slices, not list

总而言之,我想知道是否有一种简单的方法可以将用tf.keras创建的模型转换为keras模型。

2 个答案:

答案 0 :(得分:0)

我想出了一种解决方法。我只是使用tf.keras.load_model加载模型,然后使用save_weights加载。然后,我使用Keras构建相同的模型,只使用load_weights。通过使用验证数据集检查输出,我验证了权重已正确加载。

答案 1 :(得分:0)

我使用了from keras.models import load_model而不是from tensorflow.python.keras.models import load_model。问题解决了。