tensorflow使用python对pb模型做预估

Tensorflow导出pb模型,并在python和matlab下分别进行预测 tensorflow下训练完模型测试程序比较杂乱,特此整理一下。 1、我都是在linux下训练,windows下测试分析,训练保存模型如下所示。 2、然后调用frozen_model.py将模型进行固化 阅读详情

tensorflow中ckpt模型转成pb模型的代码:参考链接https://blog.youkuaiyun.com/dulingtingzi/article/details/90790282

但是为了使大家更容易明白,因为有些变量需要统一,这里针对下面的使用pb模型进行预估的代码,粘贴一下ckpt转pb模型:

import tensorflow as tf
import os
from tensorflow.contrib.layers import  flatten
from tensorflow.python.framework import graph_util
import tensorflow.contrib.slim as slim
import numpy as np

growth_rate = 6
depth = 50
compression = 0.5
weight_decay = 0.0001
nb_blocks = int((depth - 4) / 6)

def dense_net(img_input, num_classes, nb_blocks, growth_rate, weight_decay, compression, flag):
   ##自定义densenet代码
    return densenet(growth_rate,img_input,num_classes,weight_decay,nb_blocks,compression,flag)

def set_config():#设置GPU使用率# 控制使用率
    os.environ['CUDA_VISIBLE_DEVICES'] = '0'
    # 假如有16GB的显存并使用其中的8GB:
    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.3)
    config = tf.ConfigProto(gpu_options=gpu_options)
    # session = tf.Session(config=config)
    return config
#下面是你自定义的模型
num_classes=2
#is_training = tf.placeholder(tf.bool, name='placeholder_is_training')
is_training = tf.constant(False, dtype=tf.bool)#下面的名字要和你一开始训练模型的时候是一致的
inputs = tf.placeholder(tf.float32, shape=[None,30, 280, 3], name='placeholder_x')
labels = tf.placeholder(tf.float32, shape=[None,num_classes], name='placeholder_y')
pred=dense_net(inputs, num_classes,nb_blocks, growth_rate,weight_decay,compression,is_training)

model_path="./version1/checkpoint/2_class.ckpt-1"#设置model的路径,因新版tensorflow会生成三个文件,只需写到数字前
cfg=set_config()

from tensorflow.python.saved_model import signature_constants, signature_def_utils, tag_constants, utils
save_path = './version1/model_pb/test'
with tf.Session(config=cfg) as sess:
    saver = tf.train.Saver()
    saver.restore(sess, model_path)
    print('ckpt loaded')
    #注意下面的inputs和outputs的名字要和后面的pb模型做预估保持一致
    model_signature = signature_def_utils.build_signature_def(inputs={"input": utils.build_tensor_info(inputs)},outputs={"pred": utils.build_tensor_info(pred)},method_name=signature_constants.PREDICT_METHOD_NAME)
    builder = tf.saved_model.builder.SavedModelBuilder(save_path)
    legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')
    builder.add_meta_graph_and_variables(sess, [tag_constants.SERVING],clear_devices=True,signature_def_map={signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:model_signature},legacy_init_op=legacy_init_op)
    builder.save()
    print('saved_model saved')

 

tensorflow使用pb模型做预估的代码:

import os
import math
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.python.saved_model import signature_constants, signature_def_utils, tag_constants, utils
import matplotlib.pyplot as plt
from time import time

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

def preprocessing_crop_batch(images, height=30, width=280,depth=3):#按照batch去处理图像
    bs = len(images)
    GAUGE = height
    img_canvas = np.zeros([bs, height, width, depth], dtype=np.float32)
    #img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    for i,img in enumerate(images):
       #####预处理代码块
    return img_canvas

sess = tf.Session()
m = tf.saved_model.loader.load(sess, tags=[tag_constants.SERVING], export_dir='./version1/model_pb/test/')
graph = tf.get_default_graph()
signature = m.signature_def
signature_key = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
input_tensor_name0 = signature[signature_key].inputs['input'].name#与之前转pb的时候的输入输出名字保持一致
output_tensor_name = signature[signature_key].outputs['pred'].name
x0 = tf.get_default_graph().get_tensor_by_name(input_tensor_name0)
y0 = tf.get_default_graph().get_tensor_by_name(output_tensor_name)

img_path = './images'
imgs = os.listdir(img_path)
imgs = list(map(lambda x : os.path.join(img_path, x), imgs))

bs = 8
img_batch = []
for i in range(bs):
    img_batch.append(cv2.imread(imgs[i]))

t0 = time()
img_preprocess= preprocessing_crop_batch(img_batch)
ans = sess.run(y0, {x0 : img_preprocess})
ans = np.argmax(ans, axis=1)
#ans = list(map(lambda x : x.decode(), ans))
t1 = time()

#plt.imshow(img[:,:,::-1])
print(ans)
print('seconds per frame %.2f ms' % ((t1-t0) * 1000 / bs))

 

TensorFlow 1.x核心三要素:张量、计算图与会话的工业级实践 张量是带类型、形状与值域约束的多维数据契约,计算图是可序列化、跨设备移植的执行蓝图,会话则是统筹设备分配、内存管理与状态维护的资源调度中枢——这三者共同构成TensorFlow底层运行范式的基石。理解它们,不只是掌握API调用,更是建立AI工程中‘定义即校验、构建即部署’的可靠思维。在推荐系统等高并发、多环境落地场景中,显式图机制保障了从CPU训练、GPU加速到移动端推理的一致性;张量契约避免线上线下特征不一致;会话生命周期管理决定模型能否真正收敛。本文以电商冷启动推荐为背景,深入TensorFlow 1. 阅读详情

相关推荐

Python+AI气象智能预报实战:从数据处理到ConvLSTM模型构建

时空序列预测是处理气象、交通、金融等时序数据的核心技术,其核心原理在于捕捉数据在时间和空间维度上的依赖关系。通过结合卷积神经网络(CNN)的空间特征提取能力和循环神经网络(RNN)的时间序列建模能力,衍生出的ConvLSTM等模型,能够有效解决如短临降水预报这类典型的时空预测问题。这项技术的价值在于,它将传统基于物理方程的数值预报与数据驱动的AI方法相结合,提升了对复杂天气系统演变的预测精度和时效性。在实际应用中,它被广泛用于雷达回波外推、台风路径预测、空气质量预报等场景。本文以构建智能短临降水预报模型为例

weixin_34204722的博客 487

【无标题】ModuleNotFoundError: No module named ‘tf_slim‘

使用jupyter notebook 起因:tensorflow 2.x版本没有contrib模块。 问题1:from tensorflow.contrib.layers import flatten不能用了。 解决方案:from tf_slim import flatten 问题2:ModuleNotFoundError: No module named ‘tf_slim’ 解决方案:1.先看有没有安装tf_slim。 2.如果是先安装了python再安装anaconda的话,要从anconda prom

Herclues13的博客 5622

TF-IDF+TensorFlow文本分类实战:工业级稳定方案

文本分类是自然语言处理中最基础且高频的落地任务,其核心在于将非结构化文本转化为机器可计算的数值特征。Bag of Words作为最简化的词表示方法,虽忽略语序但具备强可解释性;而TF-IDF在此基础上引入逆文档频率加权,有效抑制通用停用词干扰、突出业务关键信号词,成为中文短文本分类中兼顾精度与鲁棒性的经典预处理范式。结合TensorFlow构建端到端流水线,不仅能实现CPU高效推理、低资源部署与生产级模型管理,更支持SavedModel固化、动态批处理及跨平台一致性校验,显著提升线上服务稳定性与运维可控性。

weixin_34034261的博客 409

深度学习中batch normalization

目录 1Batch Normalization笔记1.1引包1.2构建模型:1.3构建训练函数1.4结论 Batch Normalization笔记 我们将会用MNIST数据集来演示这个batch normalization的使用, 以及他所带来的效果: 引包 import tensorflow as tf import os from tensorflow.examples....

weixin_30377461的博客 173

用SQL做机器学习:BigQuery ML实战指南

机器学习(ML)本质上是将数据转化为可执行预测的统计建模过程,其核心原理在于特征工程、模型拟合与泛化评估。随着数据基础设施演进,ML正从Python生态向数据湖原生能力迁移——SQL作为最普及的数据操作语言,天然具备可审计、可复现、易协同的工程优势。BigQuery ML正是这一趋势的典型代表,它将逻辑回归、ARIMA_PLUS、DNN等常用模型封装为标准SQL语法,在PB级数据上直接完成训练与预测,无需导出、不依赖本地环境。该技术显著降低数据科学门槛,特别适用于电商复购预测、用户分群、LTV建模等高频业务

cri5768的博客 424

tensorflow之保存为pb文件并进行预测(采用手写数字识别数据进行演示)

一、模型训练并保存为pb文件 1.完整代码 coding: utf-8 # In[2]: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data import os import time # In[3]: # 载入数据集 mnist = input_data.read_da...

永远飞翔的鸟 1836

tensorflow生成pb模型文件及加载pb文件预测

再进入正题前,我们先介绍一下checkpoint(ckpt)和pb的区别和联系 model 保存方法 结果文件 加载 ckpt tf.train.Saver() 主要的4个文件 checkpoint model.ckpt.data-xxx model.ckpt.index model.ckpt.meta tf.train.Saver() save...

allan2222的博客 7192

STM32无线遥控小车的设计

基于SPI通信的无线摇杆小车的设计

weixin_69414084的博客 2927

Switch 看 B 站完整教程:wiliwili 安装与上手指南

周日下午,Switch 插在底座上往电视投屏,你想在大屏上刷 B 站,可惜系统里根本没有 B 站应用;手机 App 屏幕太小,电脑又离得远。wiliwili 是一款专为手柄设计的第三方 B 站客户端,在 Switch 上只需一个 .nro 文件,就能完成首页推荐、搜索、弹幕、评论,甚至可以把手机里的本地视频串流到大屏播放。下面带你从零安装 wiliwili,并走完第一次完整观看流程。 ## 🎬

gitblog_00099的博客 367

Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化

拜拜PHOTOSHOP- 领导突然让我帮他把公章从图片中抠出来,在确保了不是要做坏事的情况下,我打开了PHOTOSHOP,用魔棒工具一点一点抠,但由于魔棒工具的原理是对比临近区域像素差值,导致封闭字体中的区域无法剔除,而且一点一点抠非常麻烦,愤而PYTHON,使用CV2完美解决。 效果如下(马赛克是我添加的): 任务就是把蓝色的公章抠出来。 效果如上。 代码如下: import cv2 import numpy as np src = cv2.imread(r"imagepath")#这里填你的原图像路

qq_43670549的博客 1万+

手把手教你用Qt5打造二次元游戏启动器(附鸣潮同款UI源码)

本文详细介绍了如何使用Qt5框架从零开始构建一个功能完整、UI风格贴近《鸣潮》的二次元游戏启动器。教程涵盖无边框窗口、动态背景、自定义控件绘制、多线程资源加载以及下载管理等核心模块的实现,并提供了可运行的源码参考,帮助C++开发者和Qt爱好者深入掌握现代桌面应用开发技术。

weixin_29291863的博客 264

TensorFlow工业级实践:从数据管道到C++部署的全链路解析

TensorFlow不仅是一个深度学习框架,更是面向生产环境的数据科学底层操作系统。其核心在于数据流图执行机制、设备无关抽象与跨平台序列化能力,支撑高确定性、低延迟、可运维的AI服务交付。通过tf.data构建高性能数据流水线、tf.keras.Model子类化与Functional API实现复杂模型结构、SavedModel封装输入输出签名及预处理逻辑,TensorFlow将模型转化为可验证的服务契约。结合TensorRT优化与C++原生加载,真正实现零Python依赖的工业级部署。本文深入拆解tf.f

weixin_30924239的博客 407

基于迁移学习的花卉识别系统

本研究采用了预训练的经典深度学习模型,包括ResNet、AlexNet和VGG,通过微调的方式在Oxford-102数据集和一个自制花卉数据集上进行训练,并对图像进行了多种数据增强操作,以提高模型的泛化能力,致力于实现花卉的高效分类。

m0_71146337的博客 2375

TensorFlow生态全景解构:四层架构与工程避坑指南

TensorFlow并非单一深度学习框架,而是一个分层明确、边界清晰的工业级AI系统。其核心由底层C++计算引擎、中层Python API抽象、上层生产部署管线及硬件适配层构成,各层承担不可替代的技术职责。理解tf.data的数据流水线机制、tf.keras的图编译原理(@tf.function)、TFLite的图重写与量化流程,是保障训练效率与部署稳定的关键。技术价值体现在跨平台一致性、生产环境可运维性及硬件协同优化能力,广泛应用于医疗影像、边缘智能、云端推理等场景。本文基于真实项目故障数据与源码级分析,

weixin_30736301的博客 363

模型预测控制 (MPC, Model Predictive Control) 算法详解及案例分析

模型预测控制是一种基于模型的控制策略,通过在线求解一个有限时域的优化问题,预测系统的未来行为,并根据预测结果调整控制输入,以实现系统的稳定性和性能优化。

闲人编程的博客 2934

Debezium系列之:使用指定值替代指定字段的值

Debezium系列之:使用指定值替代指定字段的值

zhengzaifeidelushang的博客 306

边缘AI部署实战:从Jetson Nano环境搭建到轻量模型优化

边缘计算与嵌入式AI部署是当前AI工程化的重要方向,其核心原理在于将AI模型部署到资源受限的设备端进行本地推理,从而降低延迟、保护隐私并减少带宽依赖。这一技术的关键价值在于实现实时智能响应,特别适用于物联网、移动设备和工业自动化等场景。在实际应用中,开发者常面临环境配置复杂、模型优化困难等挑战,尤其是在Jetson Nano这类边缘硬件上部署时,需要综合考虑CUDA环境、ARM架构适配以及模型量化等工程实践。本文以Gemini 3.7 Flash轻量模型和Nano Banana 2 Lite硬件平台为例,深

weixin_34072458的博客 419

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 170

终极指南:ModelScan - 专业级机器学习模型安全扫描完整方案

在AI驱动的现代应用中,机器学习模型已成为企业核心资产。然而,模型序列化攻击这一被严重忽视的安全威胁正悄然蔓延。ModelScan作为Protect AI开发的开源工具,为机器学习模型安全扫描提供了专业级解决方案,有效防御模型序列化攻击,保障AI系统安全。 ## 威胁全景:攻击向量-影响-防御三维分析 机器学习模型序列化攻击已成为AI安全领域的新型威胁。攻击者利用模型保存过程中的安全漏洞,将恶

gitblog_00742的博客 781

无法加载文件:C:\Users\Lenovo\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本编程

当您遇到类似于"无法加载文件:C:\Users\Lenovo\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本编程"的错误消息时,请按照上述步骤来解决问题。当您尝试加载文件C:\Users\Lenovo\AppData\Roaming\npm\cnpm.ps1时,可能会遇到类似于"无法加载文件:C:\Users\Lenovo\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本编程"的错误消息。请注意,更改执行策略可能会带来一些安全风险。

PixelInk的博客 1921

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TensorFlow 2.0 十大核心更新:从 eager 执行到 SavedModel 的工程实践指南

TensorFlow 2.0 并非简单版本升级,而是面向工程效率的范式重构。其核心围绕 Eager Execution(即时执行)与 Keras 统一 API 展开,通过默认启用动态图、废除 variable_scope、强化 tf.function 编译机制等设计,显著降低调试成本与协作门槛。技术价值体现在开发可读性提升、训练循环简化、分布式扩展零侵入、模型部署标准化(SavedModel)四大维度。典型应用场景包括推荐系统快速迭代、NLP 模型微调、CV 模型服务化及金融风控实时推理——尤其在需频繁 A

weixin_34413802的博客 368

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TensorFlow 2.x目标检测实战:Monk Toolkit加速TFRecord生成与TensorRT INT8量化部署

目标检测是计算机视觉的核心任务之一,其工程落地常面临数据格式转换、模型配置复杂、推理性能瓶颈等共性挑战。TensorFlow 2.x Object Detection API虽提供标准化流程,但TFRecord构建易出错、pipeline.config强耦合、SavedModel到边缘设备部署链路断裂等问题显著抬高工程门槛。本文聚焦于实际项目中高频出现的VOC数据解析、SSD模型选型、INT8量化精度控制等关键技术环节,结合Monk AI Toolkit对TensorFlow生态的低代码封装能力,系统阐述如

anque1234的博客 347

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Triton+K8s模型服务化实战:高并发AI推理部署指南

模型服务化是机器学习落地的关键环节,其本质是将离线训练好的模型转化为稳定、低延迟、可扩展的在线API服务。核心原理在于解耦计算与业务逻辑,通过专用推理服务器(如Triton)提升GPU利用率,结合Kubernetes实现资源隔离与弹性伸缩,并借助自定义网关统一处理鉴权、限流、预处理等非计算任务。该架构显著提升服务韧性与可观测性,支撑金融风控、电商推荐、IoT预测等高压力场景。本文聚焦Triton Inference Server在真实生产环境中的配置规范、Go网关设计、K8s GPU资源管控及灰度发布实践,

weixin_33755649的博客 451

YOLOv5与微信小程序结合的AI质检实践

深度学习模型部署到移动端是当前AI工程化的重要方向,其中模型轻量化和端云协同是核心技术难点。通过TensorFlow Lite等框架可以实现模型量化压缩,配合微信小程序的生态能力,能够构建低延迟、高可用的AI应用。本文以YOLOv5模型为例,详细解析了从模型训练优化到小程序集成的完整链路,重点探讨了工业质检场景下的Retinex光照补偿、混合精度训练等实战技巧,以及WebGL加速、联邦学习等前沿方向。

441

ML模型生产可观测性:从监控到诊断的三层实践

机器学习模型部署后,如何持续保障其在线稳定性与预测可靠性?可观测性(Observability)作为超越传统监控的技术范式,聚焦于理解系统‘为何如此运行’,而非仅判断‘是否在运行’。其核心在于构建基础设施、服务框架与模型行为三层指标体系,结合数据漂移检测、特征分布追踪与动态基线告警等关键技术,实现对模型健康状态的实时感知与根因定位。尤其在模型上线后遭遇性能衰减、预测漂移或503异常时,可观测性能快速识别是数据分布偏移、特征管道故障还是资源瓶颈所致。本文基于真实生产环境,详解Prometheus+Grafan

weixin_33713503的博客 494

企业级机器学习落地:从特征管理到模型监控的工业实践

机器学习工业化不是单纯提升算法精度,而是构建可复现、可监控、可运维的端到端ML pipeline。其核心在于解决特征漂移治理、模型服务化瓶颈、数据血缘断裂与业务价值闭环四大关键问题。真实场景中,特征工程需支持版本化、可审计与跨团队复用,模型监控必须对齐业务指标(如观看时长、误拒率)而非仅看AUC或F1。技术选型应以SLA和场景约束为先——例如实时推荐关注P99延迟,风控系统强调影子模式与决策比对。本文聚焦数据科学落地与企业级ML pipeline两大热词,拆解Netflix、Amazon、Uber等七家公司

aijiagui7454的博客 395
上一篇: Linux服务器上远程配置jupyter notebook及修改notebook的密码
下一篇: 从强化学习角度分析如何能过有意思的生活
dulingtingzi
博客等级 码龄11年 666粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值