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

《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
http://www.xdnf.cn/news/1851.html

相关文章:

  • Linux中你必须掌握的20个常见命令,提升工作效率!
  • 问答页面支持拖拽和复制粘贴文件,MaxKB企业级AI助手v1.10.6 LTS版本发布
  • conformer编码器
  • DeskGo 4.0(官方版)桌面管理工具软件下载及安装教程
  • JDBC之ORM思想及SQL注入
  • UWA DAY 2025 正式启动|十年筑基,驱动游戏未来引擎
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(上)
  • Web漏洞--XSS之订单系统和Shell箱子
  • Android APP 热修复原理
  • ArrayUtils:数组操作的“变形金刚“——让你的数组七十二变
  • python实现简单的UI交互
  • RT Thread 发生异常时打印输出cpu寄存器信息和栈数据
  • C++11介绍
  • 【阿里云大模型高级工程师ACP习题集】2.5 优化RAG应用提升问答准确度(⭐️⭐️⭐️ 重点章节!!!)
  • C++面试复习日记(8)2025.4.25,malloc,free和new,delete的区别
  • Maven基础、HTTP协议、请求响应(Web后端笔记第一期)
  • 策略模式(Strategy Pattern)详解
  • 深度学习--自然语言处理统计语言与神经语言模型
  • 打造高功率、高电流和高可靠性电路板的厚铜PCB生产
  • 基于STM32的温室环境智能调控系统仿真(仿真+代码)
  • 统计术语学习
  • 鸿蒙应用开发证书考试的一点想法
  • 大量化平台也有坑?khQuant回测横评第二弹,一次“排雷”实录【AI量化第28篇】
  • GitHub每日最火火火项目(4.25)
  • 【沉浸式求职学习day25】【部分网络编程知识分享】【基础概念以及简单代码】
  • 防火墙原理与应用总结
  • re.compile(pattern) 是什么
  • day37图像处理OpenCV
  • [贪心_7] 最优除法 | 跳跃游戏 II | 加油站
  • vue滑块组件设计与实现