将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 pd
import tensorflow as tf;
import keras;
from keras import Sequential
from keras.layers import Dense
import 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保存模型的方法?
谢谢。
答案 0 :(得分:1)
我运行了您的代码。使用tensorflow 1.15,我遇到类型错误,说save_format不是一个已知参数。使用tensorflow 2,我建议使用tf.keras而不是本地keras。因此,我尝试使用tf.keras而不是keras。这次代码运行没有错误。 另外,在保存模型之前,我没有找到合适的方法。
使用TF2.0:
import pandas as pd
import tensorflow as tf;
##Change.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
import 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')
结果:
INFO:tensorflow:Assets written to: /tmp/keras-model.pb/assets
答案 1 :(得分:0)
我认为仅必须指定保存位置,而不是SavedModel格式的保存格式,例如,
classifier.save('/tmp/)
它将自动使用模型名称保存模型。
或者,您也可以说h5
classifier.save('keras-model.h5')
模型