我在将Keras生成的序列模型保存为SavedModel格式时遇到了问题。
正如https://www.tensorflow.org/guide/keras/save_and_serialize#export_to_savedmodel 中所述,要将Keras模型保存为TensorFlow可以使用的格式,我需要使用model.save()并指定save_format=’tf’,但我得到的是:
Traceback (most recent call last): File "load_file2.py", line 14, in <module> classifier.save('/tmp/keras-model.pb', save_format='tf')
我的代码示例是:
import pandas as pdimport tensorflow as tf;import keras;from keras import Sequentialfrom keras.layers import Denseimport json;import numpy as np;classifier = Sequential()classifier.add(Dense(4, activation='relu', kernel_initializer='random_normal', input_dim=4))classifier.add(Dense(1, activation='sigmoid', kernel_initializer='random_normal'))classifier.compile(optimizer ='adam',loss='binary_crossentropy', metrics = ['accuracy'])classifier.save('/tmp/keras-model.pb', save_format='tf')
我的Python版本是3.6.10。
我的TensorFlow版本是1.14和2.0(我在两个版本上都进行了测试,结果相同)。
我的Keras版本是2.3.1。
这里有什么问题,或者我应该做些什么改动才能让我的模型被保存并在TensorFlow中使用?
或者,也许有其他方法可以使用TensorFlow2作为后端来保存Keras模型?
谢谢。
回答:
我运行了你的代码。使用TensorFlow 1.15时,我得到了一个类型错误,说save_format不是已知的参数。使用TensorFlow 2时,我得到了建议使用tf.keras而不是原生的keras。所以,我尝试使用tf.keras代替keras。这次代码运行没有错误。另外,我没有看到在保存模型之前的fit方法。
使用TF2.0:
结果:
INFO:tensorflow:Assets written to: /tmp/keras-model.pb/assets