深度学习模型推理部署常用的框架总结记录

 深度学习模型的推理部署是指将经过训练的深度学习模型应用于实际场景中,进行实时预测或推断的过程。下面是深度学习模型推理部署的一般步骤和相关考虑因素:
模型选择和训练:首先选择适合任务的深度学习模型,并使用标注数据对其进行训练。常见的深度学习框架包括TensorFlow、PyTorch等。
模型优化和压缩:为了在部署阶段提高模型的效率和性能,可以对模型进行优化和压缩。例如,剪枝(Pruning)可以减少模型中不必要的参数和连接;量化(Quantization)可以减少模型中数值精度,从而减小模型大小和计算量;蒸馏(Knowledge Distillation)可以通过利用更小的模型来传递主模型的知识。
推理引擎选择:根据具体需求和平台限制,选择适合的推理引擎。常用的推理引擎有TensorRT、OpenVINO、ONNX Runtime等。这些引擎针对不同硬件设备进行了优化,以提供高效的模型推理能力。
硬件平台选择:根据推理引擎的要求,选择适合的硬件平台来运行深度学习模型。常见的硬件平台包括CPU、GPU、FPGA和专用的深度学习处理器。
模型部署和集成:将经过优化的深度学习模型部署到目标环境中,并与其他系统或应用程序进行集成。可以使用框架提供的API或编写自定义代码来实现模型的调用和集成。
性能优化和加速:在部署阶段,可根据实际需求对模型进行性能优化和加速。例如,通过批量推理(Batch Inference)减少数据传输和计算开销;使用异步推理(Asynchronous Inference)提高并发处理能力。
模型更新和维护:定期更新和维护模型,以保持其性能和准确性。可能需要对新数据进行再训练或微调,并进行版本管理和模型迁移。
在深度学习模型推理部署的过程中,还需要考虑数据隐私、安全性、性能监控和错误处理等因素,以确保模型的有效运行和可靠性。此外,对于大规模部署,可以使用容器化技术,如Docker,以便更好地管理和扩展模型的推理服务。

这里主要以TensorFlow Servicing、OpenVINO、TensorRT、ONNX Runtime、TFLite为例来进行介绍。

一、TensorFlow Servicing

TensorFlow Serving是一个用于将经过训练的TensorFlow模型进行推理部署的开源框架。它提供了高性能、可扩展和可靠的服务,使得可以在生产环境中轻松地部署和管理机器学习模型。

下面是TensorFlow Serving的一些关键特点和功能:

支持多种模型格式:TensorFlow Serving支持多种常用模型格式,包括SavedModel、tf.estimator导出的模型、Keras HDF5模型等。这使得用户可以方便地使用不同的模型格式进行推理部署。

高性能的模型加载和推断:TensorFlow Serving使用了高效的模型加载和推断机制,通过预加载模型并保持在内存中,以实现低延迟的模型推理服务。此外,它还支持多线程和异步请求处理,以提高并发处理能力。

灵活的模型版本管理:TensorFlow Serving允许同时部署多个模型版本,并提供了灵活的模型版本控制和管理功能。这样,用户可以方便地进行A/B测试、渐进式升级和回滚操作,以满足模型更新和部署的需求。

分布式系统支持:TensorFlow Serving支持分布式系统架构,可以将推理工作负载分布到多个计算节点上,以实现高并发和高可用性。用户可以根据需要进行横向扩展和负载均衡,以满足大规模生产环境的需求。

RESTful API和gRPC接口:TensorFlow Serving提供了RESTful API和gRPC接口,使得可以通过HTTP或RPC方式进行模型推理请求。这样,用户可以方便地与其他系统或应用程序集成,并提供跨平台的服务能力。

监控和日志记录:TensorFlow Serving内置了监控和日志记录功能,可以实时跟踪模型的使用情况、性能指标和错误信息。这有助于用户进行性能优化、故障排除和系统维护工作。

总之,TensorFlow Serving提供了一个强大而灵活的框架,使得将经过训练的TensorFlow模型部署到生产环境中变得简单而高效。它的特点包括支持多种模型格式、高性能的模型加载和推断、灵活的模型版本管理、分布式系统支持、多种接口选择以及监控和日志记录功能。这些特性使得TensorFlow Serving成为机器学习模型推理部署的首选框架之一。

接下来以手写数字识别为例给出实例代码:

1、训练模型:
首先,需要训练并保存一个手写数字识别模型。这里假设已经通过TensorFlow训练好了一个模型,并保存在/path/to/model路径下。

2、安装TensorFlow Serving:
安装TensorFlow Serving可以通过以下命令完成:
pip install tensorflow-serving-api

3、启动TensorFlow Serving服务器: 使用以下命令启动TensorFlow Serving服务器,并指定要加载的模型路径:
$ tensorflow_model_server --port=8501 --model_name=handwritten_digit --model_base_path=/path/to/model/
其中,--port指定服务器的端口号,--model_name指定模型的名称,--model_base_path指定模型的存储路径。

4、客户端代码: 使用Python编写一个客户端脚本来进行推理请求。以下是一个简单的示例代码:
import requests
import numpy as np

# 准备要推理的手写数字图片数据
image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

# 构建请求的JSON数据
data = json.dumps({"signature_name": "serving_default", "instances": [image.tolist()]})

# 发送推理请求
headers = {"content-type": "application/json"}
response = requests.post('http://localhost:8501/v1/models/handwritten_digit:predict', data=data, headers=headers)

# 解析推理结果
predictions = json.loads(response.text)['predictions']
predicted_label = np.argmax(predictions[0])

print("Predicted Label:", predicted_label)

2、OpenVINO

OpenVINO(Open Visual Inference and Neural Network Optimization)是英特尔开发的一个用于深度学习模型推理部署的开源工具套件。它提供了高性能、低延迟和跨平台的解决方案,帮助用户在多种硬件设备上部署和优化深度学习模型。
下面是OpenVINO框架的一些关键特点和功能:
模型优化:OpenVINO通过使用专门的工具来对深度学习模型进行优化,以提高推理性能。其中包括模型压缩、量化和剪枝等技术,以减小模型大小、降低计算量并提高模型效率。
硬件加速:OpenVINO支持多种英特尔硬件加速器,如英特尔CPU、VPU(视觉处理单元)和FPGA等。它针对这些硬件设备进行了优化,以最大程度地发挥它们在深度学习推理中的潜力。
跨平台兼容性:OpenVINO框架为不同操作系统(如Windows、Linux)和硬件平台(如x86架构、ARM架构)提供了支持,使得用户可以在不同的环境中部署和运行深度学习模型。
多个推理引擎:OpenVINO框架包含多个推理引擎,如TensorFlow、Caffe、MXNet等。这些引擎可以通过转换模型为OpenVINO特定的中间表示形式(IR)来进行部署,并利用硬件加速器进行高效的模型推理。
支持异步推断:OpenVINO框架支持异步推断,允许同时处理多个推理请求,提高并发性能和吞吐量。这对于实时应用场景尤其重要。
集成工具和库:OpenVINO提供了一系列的工具和库,用于模型转换、性能分析、模型优化和部署等任务。例如,Model Optimizer用于将深度学习模型转换为OpenVINO IR格式,Inference Engine用于执行模型推理。
支持多种语言和接口:OpenVINO支持多种编程语言和接口,如C++、Python、Java和RESTful API等。这使得用户可以使用自己熟悉的编程语言来开发和集成应用程序。
总结起来,OpenVINO是一个功能强大的深度学习模型推理部署框架,具有模型优化、硬件加速、跨平台兼容性、多个推理引擎、异步推断、集成工具和库以及多种语言和接口等特点。它为用户提供了一个高性能、低延迟和灵活的解决方案,使得深度学习模型能够在多种硬件设备上快速而有效地部署和运行。

接下来同样以手写数字识别为例,给出来实例代码实现:

1、准备模型:
首先,需要准备一个训练好的手写数字识别模型,并将其保存为TensorFlow SavedModel格式。

2、安装OpenVINO Toolkit:
在开始之前,请确保已经按照官方文档中的指引安装了OpenVINO Toolkit,并设置了必要的环境变量。

3、转换模型:
使用OpenVINO提供的Model Optimizer工具将TensorFlow模型转换为OpenVINO的中间表示形式。打开终端并执行以下命令:
$ python <path_to_openvino>/deployment_tools/model_optimizer/mo.py --input_model /path/to/model/saved_model.pb --model_name handwritten_digit --output_dir /path/to/output_directory

4、推理代码: 使用OpenVINO的Python API编写一个进行推理的脚本。以下是一个简单的示例代码:
from openvino.inference_engine import IECore
import numpy as np

# 加载OpenVINO的推理引擎
ie = IECore()
net = ie.read_network(model='path/to/output_directory/handwritten_digit.xml', weights='path/to/output_directory/handwritten_digit.bin')
exec_net = ie.load_network(network=net, device_name='CPU')

# 准备要推理的手写数字图片数据
image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

# 对输入数据进行预处理
preprocessed_image = preprocess(image)

# 执行推理
outputs = exec_net.infer(inputs={'input_blob_name': preprocessed_image})

# 解析推理结果
output_data = outputs['output_blob_name']
predicted_label = np.argmax(output_data)

print("Predicted Label:", predicted_label)

3、ONNX Runtime

ONNX Runtime是一个用于深度学习模型推理部署的高性能开源框架,它支持在不同硬件平台上快速部署和运行经过训练的模型。下面是ONNX Runtime的详细介绍:

支持多种模型格式:ONNX Runtime支持Open Neural Network Exchange(ONNX)格式,这是一个跨多个深度学习框架的可互操作的模型表示。通过支持ONNX格式,ONNX Runtime可以无缝地与多个深度学习框架(如PyTorch、TensorFlow等)集成,并进行模型推理。

跨平台兼容性:ONNX Runtime提供了对多个硬件平台和操作系统的广泛支持,包括CPU、GPU和边缘设备等。它可以在Windows、Linux和macOS等操作系统上运行,并针对不同硬件平台进行了优化。

高性能推理引擎:ONNX Runtime内置了高效的推理引擎,具有低延迟和高吞吐量的特点。它使用了多种优化技术,如图优化、自动批处理、并行计算等,以最大程度地发挥硬件设备的性能。

模型优化和转换:ONNX Runtime提供了一些工具和API,用于模型优化和转换。例如,可以使用ONNX Runtime的Model Zoo中的工具对模型进行优化、量化和剪枝等操作,以减小模型大小并提高推理性能。

动态图支持:ONNX Runtime支持动态图模型(如PyTorch)和静态图模型(如TensorFlow),使得用户可以无缝地在这两种模型之间切换,并实现跨框架的互操作性。

轻量级和可嵌入性:ONNX Runtime是一个轻量级的框架,具有较小的内存占用和二进制大小。这使得它适合于部署到资源受限的设备上,如移动设备或嵌入式系统。

社区支持和活跃度:ONNX Runtime是一个开源项目,拥有庞大的社区支持和活跃的开发者社区。这意味着用户可以从广泛的资源、文档和示例中获益,并获取及时的技术支持。

总结而言,ONNX Runtime是一个功能强大的深度学习模型推理部署框架,具有跨多个深度学习框架的互操作性、跨平台兼容性、高性能推理引擎、模型优化和转换、动态图支持、轻量级和可嵌入性等特点。它为用户提供了一个灵活且高效的解决方案,用于在各种硬件设备上部署和运行经过训练的深度学习模型。

这里同样以手写数字识别为例,给出来实例操作代码:

1、准备模型:
首先,需要准备一个训练好的手写数字识别模型,并将其保存为ONNX格式。

2、安装ONNX Runtime:
在开始之前,请确保已经安装了ONNX Runtime库。可以使用以下命令安装:
pip install onnxruntime

3、加载并执行模型: 使用ONNX Runtime的Python API编写一个进行推理的脚本。以下是一个简单的示例代码:
import onnxruntime
import numpy as np

# 加载和初始化模型
sess = onnxruntime.InferenceSession('/path/to/model/handwritten_digit.onnx')

# 准备要推理的手写数字图片数据
image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

# 对输入数据进行预处理
preprocessed_image = preprocess(image)

# 执行推理
inputs = {'input_blob_name': preprocessed_image}
outputs = sess.run(None, inputs)

# 解析推理结果
output_data = outputs[0]
predicted_label = np.argmax(output_data)

print("Predicted Label:", predicted_label)

4、TensorRT

TensorRT(Tensor Runtime)是英伟达(NVIDIA)开发的一个针对深度学习模型推理进行高性能优化和部署的框架。它可以加速深度学习模型的推理速度,并在多种硬件平台上提供低延迟的实时推理。

下面是TensorRT框架的详细介绍:

模型优化和网络层融合:TensorRT使用了一系列优化技术来优化深度学习模型,如精度校准、网络层融合、张量重排等。这些优化技术可以降低模型计算量、内存占用和延迟,同时保持模型的精度。

张量核心:TensorRT使用张量核心(Tensor Core)来加速深度神经网络的计算。张量核心是英伟达GPU中的硬件单元,可以执行高度并行的矩阵运算,大大加快了模型推理的速度。

自动混合精度:TensorRT支持自动混合精度,即自动将浮点运算转换为较低精度的运算,以提高推理性能。通过利用半精度(FP16)计算,可以显著减少内存带宽和模型计算量,从而加快推理速度。

动态形状支持:TensorRT支持动态形状(Dynamic Shapes),即在运行时根据输入的形状动态调整模型的计算图。这对于处理变长序列数据和批处理大小不固定的情况非常有用,提高了模型的灵活性和通用性。

跨平台兼容性:TensorRT提供了对多个硬件平台和操作系统的支持,包括英伟达GPU、英伟达Jetson系列嵌入式设备以及x86架构的CPU。它还与常见的深度学习框架(如TensorFlow、PyTorch等)集成,使得用户可以方便地将训练好的模型转换为TensorRT可推理的引擎。

图优化和层融合:TensorRT使用图优化技术来重组和精简神经网络的计算图,并进行层融合,以减少内存占用和计算量。这种优化可以大幅提高推理性能,并减少模型的存储空间。

支持多个推理引擎:TensorRT提供了C++和Python API,用户可以使用这些API来集成和部署TensorRT优化的模型。此外,TensorRT还提供了一些辅助工具,如ONNX-TensorRT转换器,用于将ONNX格式的模型转换为TensorRT可推理的引擎。

总结起来,TensorRT是一个强大的深度学习模型推理部署框架,具有模型优化和网络层融合、张量核心加速、自动混合精度、动态形状支持、跨平台兼容性、图优化和层融合等特点。它能够显著提高深度学习模型的推理性能,并实现在多种硬件设备上进行高效的实时推理。

同样以手写数字识别为例,给出实例操作代码:

1、准备模型:
首先,需要准备一个训练好的手写数字识别模型,并将其保存为TensorFlow SavedModel或ONNX格式。

2、安装TensorRT:
在开始之前,请确保已经按照官方文档中的指引安装了TensorRT,并设置了必要的环境变量。

3、转换模型:
使用TensorRT提供的Model Optimizer工具将TensorFlow模型或ONNX模型转换为TensorRT格式。打开终端并执行以下命令:
$ trtexec --onnx=/path/to/model/handwritten_digit.onnx --saveEngine=/path/to/model/handwritten_digit.trt
其中,/path/to/model/handwritten_digit.onnx是原始模型的路径,/path/to/model/handwritten_digit.trt是转换后TensorRT模型的保存路径。

4、推理代码: 使用TensorRT的Python API编写一个进行推理的脚本。以下是一个简单的示例代码:
import tensorrt as trt
import pycuda.driver as cuda
import pycuda.autoinit
import numpy as np

# 加载TensorRT Engine
TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
with open('/path/to/model/handwritten_digit.trt', 'rb') as f, trt.Runtime(TRT_LOGGER) as runtime:
    engine = runtime.deserialize_cuda_engine(f.read())

# 创建执行上下文
with engine.create_execution_context() as context:
    # 分配输入和输出内存
    inputs, outputs, bindings, stream = allocate_buffers(engine)

    # 准备要推理的手写数字图片数据
    image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

    # 对输入数据进行预处理
    preprocessed_image = preprocess(image)

    # 将输入数据复制到GPU内存中
    np.copyto(inputs[0].host, preprocessed_image.ravel())

    # 执行推理
    context.execute_async(bindings=bindings, stream_handle=stream.handle)
    cuda.streams.synchronize()

    # 解析推理结果
    output_data = np.array(outputs[0].host)
    predicted_label = np.argmax(output_data)

print("Predicted Label:", predicted_label)


5、TFLite

TFLite(TensorFlow Lite)是Google开发的一个用于在移动设备、嵌入式系统和物联网设备上进行深度学习模型推理的框架。它专为资源受限的设备设计,具有轻量级、快速和高效的特点。

以下是TFLite框架的详细介绍:

轻量级模型:TFLite支持对深度学习模型进行轻量化转换,以适应移动设备和嵌入式系统的计算能力和存储限制。通过模型量化、剪枝和优化等技术,TFLite可以大幅减小模型的大小,从而降低内存占用和延迟。

快速推理引擎:TFLite提供了针对移动设备和嵌入式系统的快速推理引擎。这些引擎通过使用硬件加速器(如GPU、DSP、NPU等)和优化算法,可以实现高性能的深度学习模型推理。

支持多种硬件平台:TFLite支持多种主流硬件平台,包括Android和iOS设备、Raspberry Pi等嵌入式系统,以及一些物联网设备。这使得开发者可以将经过训练和优化的深度学习模型部署到各种设备上。

多平台兼容性:TFLite可以与TensorFlow框架无缝集成,使得用户可以在TensorFlow中训练和调试模型,并将其转换为TFLite格式进行部署。此外,TFLite还提供了C++、Python和Java等多种编程语言的API,以便于开发者使用自己熟悉的工具和环境。

动态和静态图支持:TFLite支持动态图和静态图两种模型形式。对于动态图模型(如Keras),TFLite提供了TF 2.x TFLite Converter来实现模型转换;对于静态图模型(如TensorFlow SavedModel),TFLite提供了TF 1.x TFLite Converter来实现模型转换。

离线和在线推理:TFLite支持离线推理和在线推理两种方式。离线推理适用于需要在设备本地执行推理任务的场景,而在线推理适用于需要与云服务交互的场景。TFLite提供了相应的API和工具,以满足不同的需求。

扩展功能:TFLite还提供了一些扩展功能,如姿态估计、目标检测、语音识别等。这些功能可以帮助开发者更快速地构建深度学习应用,并提供高质量的预测结果。

综上所述,TFLite是一个用于在移动设备、嵌入式系统和物联网设备上进行深度学习模型推理的框架。它具有轻量级模型、快速推理引擎、多种硬件平台支持、多平台兼容性、动态和静态图支持、离线和在线推理以及扩展功能等特点。TFLite可以帮助开发者在资源受限的设备上实现高效、快速的深度学习模型推理。

同样以手写数字识别为例,给出来实例操作代码:

1、准备模型:
首先,需要准备一个训练好的手写数字识别模型,并将其保存为TensorFlow SavedModel或Keras H5格式。

2、安装TFLite库:
在开始之前,请确保已经安装了TFLite库。可以使用以下命令安装:
pip install tensorflow

3、转换模型: 使用TFLite Converter工具将TensorFlow SavedModel或Keras H5模型转换为TFLite格式。打开终端并执行以下命令:
tflite_convert --saved_model_dir=/path/to/model/saved_model/ --output_file=/path/to/model/handwritten_digit.tflite
或:
tflite_convert --keras_model_file=/path/to/model/h5_model.h5 --output_file=/path/to/model/handwritten_digit.tflite

4、推理代码: 使用TFLite的Python API编写一个进行推理的脚本。以下是一个简单的示例代码:
import tensorflow as tf
import numpy as np

# 加载并初始化模型
interpreter = tf.lite.Interpreter(model_path='/path/to/model/handwritten_digit.tflite')
interpreter.allocate_tensors()

# 获取输入和输出张量索引
input_index = interpreter.get_input_details()[0]['index']
output_index = interpreter.get_output_details()[0]['index']

# 准备要推理的手写数字图片数据
image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

# 对输入数据进行预处理
preprocessed_image = preprocess(image)

# 设置输入张量的值
interpreter.set_tensor(input_index, preprocessed_image)

# 执行推理
interpreter.invoke()

# 获取输出张量的值
output_data = interpreter.get_tensor(output_index)
predicted_label = np.argmax(output_data)

print("Predicted Label:", predicted_label)

6、TorchServe

TorchServe(Torch Server)是一个由PyTorch团队开发的用于深度学习模型推理部署的框架。它旨在提供简单且可扩展的模型部署解决方案,使用户能够将经过训练的PyTorch模型快速部署到生产环境中。

以下是TorchServe框架的详细介绍:

模型部署和管理:TorchServe提供了一种简单而强大的方式来部署和管理深度学习模型。用户可以使用TorchServe命令行工具轻松地启动、停止和管理多个模型实例。此外,TorchServe还支持模型热更新,即在不中断服务的情况下更新已部署的模型。

多模型支持:TorchServe支持同时部署多个模型,并通过RESTful API提供对这些模型的访问。这使得用户可以在同一服务器上同时运行多个模型实例,并通过API调用进行模型推理。

高性能和低延迟:TorchServe通过使用多线程和异步操作等技术,实现了高性能和低延迟的模型推理。它还支持模型批处理、模型预热和请求缓存等功能,以进一步提高推理性能。

灵活的模型配置:TorchServe使用简单的JSON配置文件来定义模型的推理行为。这使得用户可以轻松地配置模型的输入输出格式、预处理和后处理操作等,并根据需求进行调整。

自定义推理逻辑:TorchServe允许用户通过编写自定义推理逻辑来扩展框架的功能。用户可以编写自定义的推理处理程序,以在推理前或推理后执行额外的操作,如数据转换、日志记录等。

跨平台兼容性:TorchServe可以在多个平台上运行,包括Linux、Windows和macOS等。它支持CPU和GPU推理,并与常见的深度学习库(如PyTorch和TorchScript)无缝集成。

社区支持和活跃度:TorchServe是一个基于开源项目的框架,有一个活跃的开发者社区,提供了广泛的文档、示例和教程。这使得用户可以从社区资源中获取帮助和支持,并参与到框架的改进和贡献中。

综上所述,TorchServe是一个用于深度学习模型推理部署的框架,具有模型部署和管理、多模型支持、高性能和低延迟、灵活的模型配置、自定义推理逻辑、跨平台兼容性和活跃的社区支持等特点。TorchServe提供了一个简单且可扩展的方式来将训练好的PyTorch模型部署到生产环境中,并为用户提供高效、可靠的模型推理服务。

同样以手写数字为例,给出实例操作代码:
 

1、准备模型:
首先,需要准备一个训练好的手写数字识别模型,并将其保存为PyTorch模型文件(通常是.pth或.pt格式)。

2、安装TorchServe和TorchVision:
在开始之前,请确保已经安装了TorchServe和TorchVision库。可以使用以下命令安装:
pip install torchserve torch torchvision

3、转换为TorchScript格式: 使用PyTorch提供的torch.jit.trace函数将模型转换为TorchScript格式。以下是一个简单的示例代码:
import torch
import torchvision.transforms as transforms

# 加载并初始化模型
model = torch.load('/path/to/model/handwritten_digit.pth')
model.eval()

# 创建示例输入
example_input = torch.rand(1, 1, 28, 28)  # 替换成实际的手写数字图片数据

# 将模型转换为TorchScript格式
traced_model = torch.jit.trace(model, example_input)
traced_model.save('/path/to/model/handwritten_digit.pt')


4、配置和启动TorchServe: 创建一个配置文件 config.properties,其中包含了模型的相关信息、预处理和后处理操作等。以下是一个示例配置文件的内容:
model_name=handwritten_digit
model_file=/path/to/model/handwritten_digit.pt
handler=app.HandwrittenDigitHandler
batch_size=1
max_batch_delay=5000
initial_workers=1
synchronous=false
在上述配置文件中,model_name 是模型名称,model_file 是TorchScript模型的路径,handler 是自定义的请求处理类,batch_size 是批处理大小,max_batch_delay 是设置延迟时间,initial_workers 是初始工作进程数,synchronous 设置是否同步执行。

启动TorchServe服务器并加载模型:
torchserve --start --model-store=/path/to/model/store --models handwritten_digit=/path/to/config.properties
其中,/path/to/model/store 是模型存储目录的路径。


5、发送推理请求: 使用HTTP POST请求发送推理请求到TorchServe服务器。以下是一个简单的示例代码:
import requests
import numpy as np

# 准备要推理的手写数字图片数据
image = np.random.rand(28, 28)  # 替换成实际的手写数字图片数据

# 对输入数据进行预处理
preprocessed_image = preprocess(image)

# 构建推理请求的URL和数据
url = 'http://localhost:8080/predictions/handwritten_digit'
data = {'input': preprocessed_image.tolist()}

# 发送推理请求
response = requests.post(url, json=data)

# 解析推理结果
output_data = response.json()
predicted_label = np.argmax(output_data['predictions'])

print("Predicted Label:", predicted_label)


猜你喜欢

转载自blog.csdn.net/Together_CZ/article/details/131856146