升级Tensorflow模型或重新训练SavedModel。

问题描述 投票:1回答:1

我在2017年关注了 "Tensorflow for poets",并重新训练了自己的图像集合,并创建了 "retrained_graph.pb "和 "retrained_labels.txt "今天我需要在Tensorflow Serving上运行这个模型。有两个选项可以完成这个任务。

  1. 升级旧模型,将其保存为 "save_model "格式,并在Tensorflow Serving上使用--我找到了一些SO的贴子来实现它(这个).

  2. 使用最新的 Tensorflow Hub 与 Keras (https:/www.tensorflow.orgtutorialsimageshub_with_keras)

我正在寻找其中最好的方案,或者是新的方案。

tensorflow tensorflow-serving imagenet tensorflow-hub
1个回答
0
投票

在我看来,无论是使用 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)
© www.soinside.com 2019 - 2024. All rights reserved.