我在2017年关注了 "Tensorflow for poets",并重新训练了自己的图像集合,并创建了 "retrained_graph.pb "和 "retrained_labels.txt "今天我需要在Tensorflow Serving上运行这个模型。有两个选项可以完成这个任务。
升级旧模型,将其保存为 "save_model "格式,并在Tensorflow Serving上使用--我找到了一些SO的贴子来实现它(这个 或该).
使用最新的 Tensorflow Hub 与 Keras (https:/www.tensorflow.orgtutorialsimageshub_with_keras)
我正在寻找其中最好的方案,或者是新的方案。
在我看来,无论是使用 Tensorflow Hub
或使用 Pre-Trained Models
里面 tf.keras.applications
是比较好的,因为无论哪种情况,保存模型都不需要修改很多代码,使其与Tensorflow Serving兼容。
重用预训练模型的代码。MobileNet
内有 tf.keras.applications
如下图所示。
#Import MobileNet V2 with pre-trained weights AND exclude fully connected layers
IMG_SIZE = 224
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
from tensorflow.keras import Model
IMG_SHAPE = (IMG_SIZE, IMG_SIZE, 3)
# Create the base model from the pre-trained model MobileNet V2
base_model = tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,
include_top=False,
weights='imagenet')
# Add Global Average Pooling Layer
x = base_model.output
x = GlobalAveragePooling2D()(x)
# Add a Output Layer
my_mobilenetv2_output = Dense(5, activation='softmax')(x)
# Combine whole Neural Network
my_mobilenetv2_model = Model(inputs=base_model.input, outputs=my_mobilenetv2_output)
你可以使用下面的代码保存模型。
version = 1
MODEL_DIR = 'Image_Classification_Model'
export_path = os.path.join(MODEL_DIR, str(version))
tf.keras.models.save_model(model = model, filepath = export_path)