我有一個訓練有素的Tensorflow模型和權重矢量已分別導出到protobuf和權重文件。如何將訓練有素的Tensorflow模型轉換爲Keras?
如何將這些轉換爲Keras可以使用的JSON或YAML和HDF5文件?
我有Tensorflow模型的代碼,因此也可以將tf.Session
轉換爲keras模型並將其保存在代碼中。
我有一個訓練有素的Tensorflow模型和權重矢量已分別導出到protobuf和權重文件。如何將訓練有素的Tensorflow模型轉換爲Keras?
如何將這些轉換爲Keras可以使用的JSON或YAML和HDF5文件?
我有Tensorflow模型的代碼,因此也可以將tf.Session
轉換爲keras模型並將其保存在代碼中。
目前,在Tensorflow或Keras中沒有直接內置的支持將凍結模型或檢查點文件轉換爲hdf5格式。
但是既然你提到你有Tensorflow模型的代碼,你將不得不在Keras中重寫那個模型的代碼。然後,您將必須從檢查點文件中讀取變量的值,並使用layer.load_weights(weights)
方法將其分配給Keras模型。
除了這種方法,我建議你直接在凱拉斯進行培訓,因爲它聲稱Keras' optimizers are 5-10% times faster than Tensorflow's optimizers。其他方法是用tf.contrib.keras模塊在Tensorflow中編寫代碼並直接以hdf5格式保存文件。
不確定這是你正在尋找的,但我碰巧只是在TF 1.2中新發布的keras支持做同樣的事情。你可以在這裏找到更多的API:https://www.tensorflow.org/api_docs/python/tf/contrib/keras
爲了節省一點時間,我還發現我必須包含如下所示的keras模塊和附加到API文檔中顯示的附加python.keras。
從tensorflow.contrib.keras.python.keras.models導入順序
希望幫助你想要去得到你。基本上一旦集成,您就可以照常處理您的模型/重量輸出。
我認爲keras的回調也是一個解決方案。
的CKPT文件可以通過TF與保存:
saver = tf.train.Saver()
saver.save(sess, checkpoint_name)
,並在Keras加載關卡,你需要一個回調類如下:
class MyCallbacks(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')
testCallBack = MyCallbacks(pretrian_model_path='./XXXX.ckpt')
model.fit(x_train, y_train, batch_size=128, epochs=20, callbacks=[testCallBack])
這樣會好的。 我認爲這很容易實現,並希望它有幫助。