欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 《Keras 3 :使用 TFServing 提供 TensorFlow 模型》

《Keras 3 :使用 TFServing 提供 TensorFlow 模型》

2025/4/26 6:53:06 来源:https://blog.csdn.net/zheng_ruiguo/article/details/147515553  浏览:    关键词:《Keras 3 :使用 TFServing 提供 TensorFlow 模型》

《Keras 3 :使用 TFServing 提供 TensorFlow 模型》

作者:Dimitre Oliveira
创建日期:2023/01/02
最后修改时间:2023/01/02
描述:如何使用 TensorFlow Serving 为 TensorFlow 模型提供服务。

(i) 此示例使用 Keras 3

 在 Colab 中查看 

 GitHub 源


介绍

构建机器学习模型后,下一步就是为其提供服务。 您可能希望通过将模型公开为终端节点服务来实现此目的。 您可以使用许多框架来实现此目的,但 TensorFlow 生态系统有自己的解决方案,称为 TensorFlow Serving。

来自 TensorFlow Serving GitHub 页面:

TensorFlow Serving 是一种灵活的高性能机器服务系统 专为生产环境设计的学习模型。它处理 机器学习的推理方面,在训练后获取模型和 管理其生命周期,通过 高性能、引用计数的查找表。TensorFlow Serving 提供 与 TensorFlow 模型开箱即用,但可以轻松扩展 来提供其他类型的模型和数据。

请注意一些功能:

  • 它可以服务于多个模型,也可以服务于同一模型的多个版本 同时
  • 它公开了 gRPC 和 HTTP 推理终端节点
  • 它允许在不更改任何客户端代码的情况下部署新的模型版本
  • 它支持金丝雀新版本和 A/B 测试实验模型
  • 由于高效、低开销,它为推理时间增加了最小的延迟 实现
  • 它具有一个计划程序,可将单个推理请求分组为 batch 用于在 GPU 上联合执行,具有可配置的延迟控制
  • 它支持许多可维护对象:Tensorflow 模型、嵌入向量、词汇表、 特征转换,甚至非基于 Tensorflow 的机器学习模型

本指南使用 Keras 应用程序 API 创建一个简单的 MobileNet 模型。 然后使用 TensorFlow Serving 提供它。 重点是 TensorFlow Serving,而不是 TensorFlow 的 TensorFlow 中。

注意:您可以在此链接中找到包含完整工作代码的 Colab 笔记本。


依赖

import osos.environ["KERAS_BACKEND"] = "tensorflow"import json
import shutil
import requests
import numpy as np
import tensorflow as tf
import keras
import matplotlib.pyplot as plt

在这里,我们从 Keras 应用程序加载一个预先训练的 MobileNet,这是 模型。

model = keras.applications.MobileNet()
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet/mobilenet_1_0_224_tf.h5 17225924/17225924 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step 

预处理

大多数模型不能在原始数据上开箱即用,它们通常需要一些 类型的预处理步骤来根据模型要求调整数据, 在这个 MobileNet 的情况下,我们可以从它的 API 页面看到它需要 其输入图像的三个基本步骤:

  • 标准化为范围的像素值[0, 1]
  • 缩放到范围的像素值[-1, 1]
  • 具有意义形状的图像(224, 224, 3)(height, width, channels)

我们可以使用以下函数来完成所有这些作:

def preprocess(image, mean=0.5, std=0.5, shape=(224, 224)):"""Scale, normalize and resizes images."""image = image / 255.0  # Scaleimage = (image - mean) / std  # Normalizeimage = tf.image.resize(image, shape)  # Resizereturn image

关于使用 “keras.applications” API 进行预处理和后处理的说明

Keras 应用程序 API 中提供的所有模型还提供 and 函数,这些 函数分别负责预处理和后处理 ,并且已经包含了这些步骤所需的所有 logic。 这是在使用 Keras 时处理输入和输出的推荐方法 应用程序模型。 在本指南中,我们不使用它们来介绍自定义的优势 签名。preprocess_inputdecode_predictions


后处理

在相同的上下文中,大多数模型输出需要额外处理的值 满足用户需求,例如用户不想知道 对于给定图像的每个类的 logits 值,用户想要知道的是 它属于哪个类。对于我们的模型,这转换为以下内容 Transformations 的 Outputs:

  • 获取具有最高预测值的类的索引
  • 从该索引获取类的名称
# Download human-readable labels for ImageNet.
imagenet_labels_url = ("https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt"
)
response = requests.get(imagenet_labels_url)
# Skipping background class
labels = [x for x in response.text.split("\n") if x != ""][1:]
# Convert the labels to the TensorFlow data format
tf_labels = tf.constant(labels, dtype=tf.string)def postprocess(prediction, labels=tf_labels):"""Convert from probs to labels."""indices = tf.argmax(prediction, axis

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词