当前位置: 首页 > news >正文

《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

相关文章:

  • PWNOS:2.0(vulnhub靶机)
  • 前端技术Ajax实战
  • 06-stm32时钟体系
  • 企业部署Power BI 报表服务器,在第三方系统嵌套该报表服务器,并实现单点登录
  • 【linux】Chrony服务器
  • HTML 详解:从基础结构到语义标签
  • 【音视频】⾳频处理基本概念及⾳频重采样
  • NAT地址转换
  • 使用 AutoGen 与 Elasticsearch
  • 代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会
  • 二项分布详解:从基础到应用
  • websheet 之 单元格
  • 蓝桥杯 5. 交换瓶子
  • Flutter Dart 集合类型List Set Map详解军 以及循环语句 forEaclh map where any every
  • Redis ⑥-string | hash | list
  • 【计算机视觉】CV实战 - 基于YOLOv5的人脸检测与关键点定位系统深度解析
  • 八大排序——冒泡排序/归并排序
  • 如何创建极狐GitLab 私密议题?
  • UML 类图基础和类关系辨析
  • 基于Java(JSP)+MySQL实现深度学习的音乐推荐系统
  • 特朗普说克里米亚将留在俄罗斯,泽连斯基:绝不承认
  • 证监会发布上市公司信披豁免规定:明确两类豁免范围、规定三种豁免方式
  • 破解160年基因谜题,我国科学家补上豌豆遗传研究最后拼图
  • 在黄岩朵云书院,邂逅陈丹燕与月季花的故事
  • 哈工大赵杰:人形机器人要拓展人的能力而非一味复制,未来产业要做成至少10年
  • 生态环境法典草案拟初审:应对气候变化等问题将作原则性规定