首页 > 其他分享 >Tensorflow训练好的模型部署

Tensorflow训练好的模型部署

时间:2023-03-31 16:56:32浏览次数:28  
标签:Tensor 部署 模型 TensorFlow tf Tensorflow model saved

导出模型

首先,需要将TensorFlow训练好的模型导出为可部署的格式。可以使用tf.saved_model API将模型保存为SavedModel格式。例如,下面的代码将模型导出为/tmp/saved_model目录:

import tensorflow as tf

# 生成模型

# 导出模型
tf.saved_model.save(model, '/tmp/saved_model')

go语言如何调用TensorFlow训练好的模型

在Go语言中调用TensorFlow训练好的模型需要使用TensorFlow的Go API。可以使用以下步骤来调用TensorFlow训练好的模型:

  1. 安装TensorFlow Go

首先,需要安装TensorFlow Go。可以在官方GitHub仓库中下载TensorFlow Go的源代码,并按照说明进行编译和安装。

  1. 加载模型

使用TensorFlow Go API加载模型。可以使用tf.LoadSavedModel函数来加载训练好的模型。例如,下面的代码展示了如何加载保存在/tmp/saved_model目录下的模型:

import tensorflow as tf

model, err := tf.LoadSavedModel("/tmp/saved_model", []string{"serve"}, nil)
if err != nil {
    // 处理错误
}

LoadSavedModel函数的第一个参数是保存模型的目录路径。第二个参数是模型的标签(Tag),用于区分不同的模型版本。可以通过命令saved_model_cli show来查看模型的标签。例如,下面的命令将展示保存在/tmp/saved_model目录下的模型的标签:

saved_model_cli show --dir /tmp/saved_model --all
  1. 推理

使用加载的模型进行推理。在推理之前,需要将输入数据转换为tf.Tensor类型的数据。可以使用tf.NewTensor函数将Go语言的[]float32类型数据转换为tf.Tensor类型的数据。例如,下面的代码展示了如何将输入数据[1.0, 2.0, 3.0]转换为tf.Tensor类型的数据,并使用加载的模型进行推理:

import tensorflow as tf

// 加载模型

input := []float32{1.0, 2.0, 3.0}
tensor, err := tf.NewTensor(input)
if err != nil {
    // 处理错误
}

outputs, err := model.Session.Run(
    map[tf.Output]*tf.Tensor{
        model.Graph.Operation("input").Output(0): tensor,
    },
    []tf.Output{
        model.Graph.Operation("output").Output(0),
    },
    nil,
)
if err != nil {
    // 处理错误
}

outputData := outputs[0].Value().([][]float32)

在推理之后,可以使用输出数据进行进一步的处理。例如,可以将输出数据转换为Go语言的[]float32类型的数据。

这就是使用Go语言调用TensorFlow训练好的模型的基本步骤。需要注意的是,具体实现可能会因为使用的TensorFlow版本和模型结构而略有不同。


Java如何调用TensorFlow训练好的模型

在Java中调用TensorFlow训练好的模型需要使用TensorFlow的Java API。可以使用以下步骤来调用TensorFlow训练好的模型:

  1. 添加依赖

首先,需要在Java项目的pom.xml文件中添加TensorFlow的依赖项。可以使用以下依赖项:

<dependency>
    <groupId>org.tensorflow</groupId>
    <artifactId>tensorflow</artifactId>
    <version>2.7.0</version>
</dependency>
  1. 加载模型

使用TensorFlow Java API加载模型。可以使用SavedModelBundle类来加载训练好的模型。例如,下面的代码展示了如何加载保存在/tmp/saved_model目录下的模型:

import org.tensorflow.SavedModelBundle;
import org.tensorflow.Session;
import org.tensorflow.Tensor;

SavedModelBundle model = SavedModelBundle.load("/tmp/saved_model", "serve");
Session session = model.session();

load方法的第一个参数是保存模型的目录路径。第二个参数是模型的标签(Tag),用于区分不同的模型版本。可以通过命令saved_model_cli show来查看模型的标签。例如,下面的命令将展示保存在/tmp/saved_model目录下的模型的标签:

saved_model_cli show --dir /tmp/saved_model --all
  1. 推理

使用加载的模型进行推理。在推理之前,需要将输入数据转换为Tensor类型的数据。可以使用Tensor.create方法将Java数组转换为Tensor类型的数据。例如,下面的代码展示了如何将输入数据[1.0, 2.0, 3.0]转换为Tensor类型的数据,并使用加载的模型进行推理:

import org.tensorflow.Tensor;

// 加载模型

float[] input = new float[] {1.0f, 2.0f, 3.0f};
Tensor<Float> inputTensor = Tensor.create(new long[] {1, input.length}, FloatBuffer.wrap(input));

List<Tensor<?>> outputs = session.runner()
    .feed("input", inputTensor)
    .fetch("output")
    .run();

float[][] outputData = new float[1][];
outputs.get(0).copyTo(outputData);

在推理之后,可以使用输出数据进行进一步的处理。例如,可以将输出数据转换为Java数组。

这就是使用Java调用TensorFlow训练好的模型的基本步骤。需要注意的是,具体实现可能会因为使用的TensorFlow版本和模型结构而略有不同。

标签:Tensor,部署,模型,TensorFlow,tf,Tensorflow,model,saved
From: https://www.cnblogs.com/sin3degree/p/17276736.html

相关文章

  • :)语言模型的评价-PPL迷惑度-从语言模型说起-|
    语言模型的评价-PPL迷惑度-从语言模型说起一语言模型1.1语言模型概念:1计算一个句子的概率模型2也就是能够判断一个句子是否是人类语言,输出其概率。 1.2推导  1.3它的概率表示为:  1.4存在两个缺陷:1、參数空间过大:条件概率P(wn|w1,w2,..,wn-1)的可能性......
  • 谷歌Chrome浏览器内直接打开编辑保存Office Word、Excel、PPT 文档,可离线部署!
    谷歌Chrome经过开发团队不断优化,凭借运行界面简单,打开速度最快及扩展插件众多,Chrome已经成为了世界上最受欢迎的浏览器。不过有一点非常可惜,由于微软Office不是开源程序,所以Chrome一直无法直接打开微软Office文档。虽然后来有一些国内厂商通过调用微软免费开源的ActiveX控件DsoFr......
  • Docker 容器上部署 Zabbix
    首先,从DockerHub上拉取Zabbix镜像。可以使用以下命令:dockerpullzabbix/zabbix-server-mysql:latest这会下载最新版本的ZabbixServer镜像和MySQL镜像。然后,创建一个Docker网络以便容器可以相互通信:dockernetworkcreatezabbix_network接下来,启动MySQ......
  • 马科维兹资产组合选择模型
    组合构造问题可以归纳为多个风险资产和一个无风险资产的情况。在两风险资产的例子中,该问题可分为三步:首先,确定可行集的风险收益权衡;然后,通过计算使资本配置线斜率最大的个资产权重权重确定最优风险组合;最后确认最合适的投资组合,由无风险资产和最优风险组合构成。投资者面临的......
  • wordpress的dockercompose部署方式
    version:'3.1'services:wordpressastra:image:wordpressrestart:alwaysports:-8082:80environment:WORDPRESS_DB_HOST:dbastraWORDPRESS_DB_USER:exampleuserWORDPRESS_DB_PASSWORD:examplepass......
  • docker wordpress 快速部署
    1.拉取mysqldockerpullmysql2.拉取wordpressdockerpullwordpress3.启动mysqldockerrun-d--namemysql-p3306:3306-eMYSQL_ROOT_PASSWORD=123456-v/data/mysql_data:/var/lib/mysqlmysql:latest4.启动wordpressdockerrun-d--namewordpress-v/da......
  • 好饭不怕晚,Google基于人工智能AI大语言对话模型Bard测试和API调用(Python3.10)
    谷歌(Google)作为开源过著名深度学习框架Tensorflow的超级大厂,是人工智能领域一股不可忽视的中坚力量,旗下新产品Bard已经公布测试了一段时间,毁誉参半,很多人把Google的Bard和OpenAI的ChatGPT进行对比,GoogleBard在ChatGPT面前似乎有些技不如人。事实上,GoogleBard并非对标ChatGPT......
  • 快来玩AI画图!StableDiffusion模型搭建与使用入门~
    前言最近AI很火......
  • 该模型采用离散化的龙贝格观测器进行无传感器控制
    该模型采用离散化的龙贝格观测器进行无传感器控制其利用PMSM数学模型构造观测器模型,根据输出的偏差反馈信号来进行PLL得到速度和角度。当观测的电流实现与实际电流跟随时,可以从观测的反电势计算得到电机的转子位置信息,形成跟踪闭环估计。龙伯格观测器采用线性控制策略代替了......
  • 关于Tensorflow!目标检测预训练模型的迁移学习
    ​   前言    关于TF的目标检测迁移学习,我一开始是想通过Tensorflow提供的API,用JS来实现的。但是官方不但没有案例,网上也没有踩坑的博客,加之我又着急要弄水印检测。    于是就在网上看了很多人用python实现的自定义训练,我也试过很多。运行的时候各种问题,不......