如何将经过训练的 Tensorflow 模型转换为 Keras?

2024-04-08

我有一个经过训练的 Tensorflow 模型和权重向量,它们已分别导出到 protobuf 和权重文件。

如何将它们转换为 Keras 可以使用的 JSON 或 YAML 和 HDF5 文件?

我有 Tensorflow 模型的代码,因此转换tf.Session到 keras 模型并将其保存在代码中。


我认为keras中的回调也是一个解决方案。

ckpt 文件可以通过 TF 保存:

saver = tf.train.Saver()
saver.save(sess, checkpoint_name)

要在 Keras 中加载检查点,您需要一个回调类,如下所示:

class RestoreCkptCallback(keras.callbacks.Callback):
    def __init__(self, pretrained_file):
        self.pretrained_file = pretrained_file
        self.sess = keras.backend.get_session()
        self.saver = tf.train.Saver()
    def on_train_begin(self, logs=None):
        if self.pretrian_model_path:
            self.saver.restore(self.sess, self.pretrian_model_path)
            print('load weights: OK.')

然后在你的 keras 脚本中:

 model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
 restore_ckpt_callback = RestoreCkptCallback(pretrian_model_path='./XXXX.ckpt') 
 model.fit(x_train, y_train, batch_size=128, epochs=20, callbacks=[restore_ckpt_callback])

那就好了。 我认为它很容易实现,希望对您有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将经过训练的 Tensorflow 模型转换为 Keras? 的相关文章

随机推荐