我一直在使用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模型。
答案 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
。问题解决了。