tensorflow:加载预训练网络及获取operation、tensor值

Tensorflow读取并使用预训练模型:以inception_v3为例 在使用Tensorflow做读取并finetune的时候,发现在读取官方给的inception_v3预训练模型总是出现各种错误,现记录其正确的读取方式和各种错误做法: 关键代码如下: import tensorflow as tf import tensorflow.contrib.slim as slim from tensorflow.contrib.slim.python.slim.... 阅读详情

下文只是个人笔记,不保证正确和详尽。

tensorflow的计算图包括tensor、operation。保存一张完整的计算图意味着同时保存两者,只需要一句话。但加载网络有痛处,在于无法当你不是作者的时候,无法快速得知网络里到底有哪些tensor、operation。

先说重点

计算图里的tensor和operation几乎结伴出现(我没验证过)。定义一个variable,则它也配备一个operation;设计一个operation,则它也有对应的输出作为tensor。所有调用格式都是:

。。eg
tensorname:indexw:0
operationnamew

index怎么取的还没搞懂。
如果没有名字(这取决于一开始训练有没有取名字),那么只能用其他接口查阅有哪些名字,再调用 ,下文会提。

准备

这是我测试用的网络。注释掉的部分可以用来做对比。
tf早期的图、权重保存方式和现在的不一样,现在是分3个文件保存的:.data .meta .index,另外还有一个记录文件checkpoint。详情谷歌。

def first():
    W = tf.Variable([[1,1,1],[2,2,2]],dtype = tf.float32,name='w')
    b = tf.Variable([[0,1,2]],dtype = tf.float32)
    c = tf.Variable([[0,1,2]],dtype = tf.float32)
    #d = tf.add(b,c)
    #e = tf.placeholder(tf.float32, [2, 2],name='holder')
    init = tf.initialize_all_variables()
    saver = tf.train.Saver()
    with tf.Session() as sess:
            sess.run(init)
            #sess.run(init,feed_dict ={e:[[1, 2], [3, 4]]})
            save_path = saver.save(sess,"_save/model.ckpt")
获取tensor——方法一
#-*- coding:utf-8 -*-
import tensorflow as tf

def second():
    #tf-gpu,我在evga1080上遇到了不支持的数据类型,要加一个config
    config = tf.ConfigProto(allow_soft_placement = True)
    sess = tf.Session(config = config)
    #导入图结构。
    saver = tf.train.import_meta_graph('_save/model.ckpt.meta')
    #恢复权重值。model.ckpt是我的3个文件的前缀。本来应该从checkpoint导入前缀,我的checkpoint出了点问题。
    saver.restore(sess,'_save/model.ckpt')
    var = tf.global_variables()#全部调用
    for i in var:
        print i

以上代码会打印计算图中的所有variable,不知道为什么是重复打印两次。

获取tensor——方法二
#-*- coding:utf-8 -*-
import tensorflow as tf
from tensorflow.python import pywrap_tensorflow

def third():
    checkpoint_path = "_save/model.ckpt"
    reader = pywrap_tensorflow.NewCheckpointReader("_save/model.ckpt")
    var_to_shape_map = reader.get_variable_to_shape_map()
    for key in var_to_shape_map:
        print("tensor_name: ", key)
        print(reader.get_tensor(key))#按名字调用

以上代码打印的依然是variable,只打印一遍。

补充
  • 如果把first()函数里的add和placeholder也加入网络,两种打印结果都不变,因为add和placeholder都是operation。
  • 以类似格式书写,可以恢复operation:
    给add/placeholder加上名字:d = tf.add(b,c,name='add'),再在加载网络后按以下两种方式调用:
    d = graph.get_operation_by_name("add")
    print d
    op = graph.get_operations()
    for i in op:
        print i

会发现都可以打印出add。

  • 事实上,如果你把get系列函数名称中的operation替换成tensor,再把用到名字的地方按开头的表格修改格式,会得到对应另一种输出。也就是“定义一个variable,则它也配备一个operation;设计一个operation,则它也有对应的输出作为tensor”。原理和tensorflow的设计有关, 建议查看权威资料。
【TensorFlow】学习笔记-TensorFlow 是什么? (张量)是多维数组的抽象表示,可以存储数据,是TensorFlow的基本计算单位,支持标量(0D张量),向量(1D张量),矩阵(2D张量),高维矩阵(3D张量)。:用于机器学习环境的工具库,涵盖数据验证,数据转换,模型部署等方面,可以帮助用户完成数据预处理到模型部署的整个流程。:基础核心功能,包括了计算图的定义和优化,Tensor数据类型的处理,如加,减,矩阵乘法,自动求导等。:TensorFlow提供一系列对张量操作的函数,例如加法,矩阵乘法,卷积等。:张量维度的大小,(3,2)表示3行2列。 阅读详情

相关推荐

Supermask:基于预训练权重的二值掩码稀疏化方法

稀疏神经网络是模型压缩与边缘部署的关键技术路径,其核心在于如何在不损害性能的前提下减少参数量与计算量。Supermask 作为一种新兴范式,区别于传统剪枝与量化,它不修改预训练权重,而是通过可学习的二值掩码(0/1)动态选择有效连接,实现权重-结构解耦。该方法依托预训练权重的内在结构信息,在冻结主干参数的前提下,仅优化轻量级掩码张量,兼具训练高效性、硬件友好性与即插即用特性。其技术价值体现在低开销适配、零微调迁移与原生稀疏加速,广泛适用于移动端推理、IoT设备部署及大模型轻量化场景。本文聚焦 Superma

weixin_33690367的博客 396

tensorflow中取值

最近在写用tensorflow的程序时,中途遇到想取出tensorflow中的返回值是什么,可是其返回值也是一个tensor。了两种方法:tf.cast(value,dtype=int)tf.to_int32(value)可是,着两条语句返回的都是一个tensor的信息,最后找到了这篇博客,两种方法都可以得到同样的结果: import tensorflow as tf a = tf.constant...

wuzqChom的博客 1万+

FP7195升降压恒流驱动IC:从AC/DC 12~24V输入到稳定输出的高效电源设计实战

本文详细解析FP7195升降压恒流驱动IC的工作原理与应用实战。该芯片支持4.5V-32V宽输入范围,能自动切换升降压模式并保持输出恒定,特别适用于车载LED照明、工业电源等电压波动场景。通过实际案例分享PCB布局、元件选型及调试技巧,帮助工程师实现高效稳定的电源设计。

vodka的博客 955

获取Tensor类型变量的值

方法一:在会话中print( sess.run(x) ) import tensorflow as tf #定义tensor常量 x = tf.random_uniform((2, 3), -1, 1) #开启会话 with tf.Session() as sess: print (sess.run(x)) #[[ 0.46468353 -0.61598516 -0.903...

あずにゃん梓喵的博客 3280

速腾RS-LiDAR-16激光雷达ROS配置全攻略:从硬件连接到Rviz点云可视化

本文详细介绍了速腾RS-LiDAR-16激光雷达在ROS环境中的配置与使用全攻略,涵盖硬件连接、网络配置、ROS驱动安装及Rviz点云可视化等关键步骤。通过实战案例和技术解析,帮助开发者快速实现激光雷达数据采集与处理,提升机器人感知系统的部署效率。

ooo22的博客 249

Unity 调用安卓内部安装apk

一、申请权限 应用内安装其他应用的权限属于特殊权限,需要在特殊申请。 Uri packageURI = Uri.parse("package:" + mContext.getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startA...

BDDNH的博客 1240

【 TensorFlow】查看tensor变量的值

在使用tensorflow的过程中,有时候我们需要知道中间变量tensor的值,这可以帮助我们查看中间结果,调试程序。但是你会发现,tensor直接打印,输出的是数据类型、形状等等的信息,无法打印变量的值,如下图所示: 因此,要打印输出tensor的值,需要借助class tf.Session, class tf.InteractiveSession。因为我们在建立graph的时候,只建立t...

人间不值得 1万+

Python爬虫:抓取外卖平台餐厅菜单、价格与评价数据

美团外卖:国内领先的外卖平台之一,提供餐饮外卖、超市配送等服务。饿了么:另一大主流外卖平台,覆盖广泛的餐饮品类。等:国际性的外卖平台。在本文中,我们将以美团外卖为例,展示如何抓取餐厅的菜单、价格和评价等数据。我们会使用Python的爬虫库,如Scrapy和Selenium,来解决抓取任务。本文详细介绍了如何使用Python爬虫抓取外卖平台上的餐厅菜单、价格、评价等信息。我们展示了如何使用Scrapy和Selenium抓取静态与动态网页数据,如何清洗和存储数据,并讨论了如何应对外卖平台的反爬虫机制。

2201_76125261的博客 1499

tensorflow 利用索引获取tensor特定元素

上代码,利用tf.gather_nd函数: eg1: 常数索引 import tensorflow as tf sess=tf.Session() a=tf.constant([[0,1,2],[3,4,5]])#shape:(2,3) result=tf.gather_nd(a,[0,1])#1 sess.run(result) eg2:变量索引 import tensorflow as tf sess=tf.Session() a=tf.constant([[0,1,2],[3,4,5]])

君莫笑 4885

使用verilog设计实现QR分解

QR(正交三角)分解法是求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。 使用verilog对QR实现方法进行设计并进行功能仿真: 如下: 顶层模块代码: module TOP( H1R, H1I, H2R, H2I, H3R, H3I, H4R, H4I, clk, rst_n, Y1R, Y1I, Y2R, Y2I, X1R, X1I, X2R, X2I ); parameter width = 16; // I

QQ_778132974的博客 2150

STM32F407驱动OV2640摄像头全栈解析:DCMI+DMA+SCCB协同设计

图像采集是嵌入式视觉系统的基石,其核心在于传感器与MCU间的数据通路构建。原理上需理解并行接口(如DCMI)的硬件同步捕获机制、串行控制总线(如SCCB/I²C)的寄存器级配置逻辑,以及DMA在高吞吐数据搬运中的关键作用。技术价值体现在解放CPU、保障实时性、降低功耗,并支撑JPEG压缩与RGB565直显等差异化应用。典型场景包括智能终端实时预览、低带宽图像上传、工业现场视频监控及教学实验平台搭建。本文以STM32F407与OV2640集成实践为载体,深入剖析DCMI时序约束、SCCB软件模拟实现及DMA循

weixin_36151775的博客 180

tensorflow:将tensor中满足某一条件的数值取出组成新的tensor

首先使用tf.where()将满足条件的数值索引取出来,在numpy中,可以直接用矩阵引用索引将满足条件的数值取出来,但是在tensorflow中这样是不行的。所幸,tensorflow提供了tf.gather()和tf.gather_nd()函数。 看下面这一段代码: import tensorflow as tf sess = tf.Session() def get_tensor(): ...

u010551462的专栏 1万+

【报错解决】OpenClaw 报错 `openclaw: command not found`:全局命令未加入系统 PATH 的深度排查与修复指南

在国产AI工具链开发中,OpenClaw作为关键命令行工具常出现command not found报错。本文深度分析该问题的根源——Linux环境变量PATH未包含用户级安装目录(~/.local/bin)。通过四种解决方案(临时PATH修改、永久配置、软链接、虚拟环境处理)和排错Checklist,揭示"命令存在却找不到"的本质是路径配置问题,特别适用于Docker/国产Linux/非root环境。文中强调理解Linux工具链机制对国产AI开发的重要性,并指出这是开发者掌握环境

博客 5383

parallels网络初始化失败_TensorFlow 1.xx加载预训练模型但Tensor不匹配导致失败的解决方法...

点击上方蓝色文字一键关注!加载预训练模型那是常有的事,有时候是因为断电等非正常终止需要加载原先的预训练模型,有时候却是因为在开源模型的基础上训练不同的分类器或者迁移学习,后者就经常因为最后一个fully connect层的分类数目不一致导致加载失败,往往出现如下的错误信息:InvalidArgumentError (see above for traceback): Assign req...

weixin_39580124的博客 404

linux平台Modbus TCP测试

【代码】linux平台Modbus TCP测试。

无线互联&网络介绍 818

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

tensorflow 如何获取模型中想要的张量

当我们想要改造或者利用某一预训练模型来完成一些其它任务时,一个常用且必备的操作是从指定模型中获取到我们感兴趣的张量(tensor)。 例如我想使用一个已经训练好的CNN模型中间的某一层的结果作为特征向量来完成另一个相关任务,就需要这样的操作。 如何做到?很简单,只需两步: 1.获取到感兴趣张量的名字. 2.使用get_tensor_by_name函数获取 下面详细说明下 1.获取到感兴趣张量的名字...

随煜而安的专栏 3951

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TensorNets开发者指南:自定义网络层与预训练权重加载技巧

TensorNets是一个高级神经网络定义库,提供预训练权重的TensorFlow实现。作为深度学习开发者,掌握TensorNets的自定义网络层和预训练权重加载技巧能极大提升开发效率。本文将详细介绍如何在TensorNets中自定义网络层并有效加载预训练权重,帮助你快速构建和部署深度学习模型。 ## 🚀 TensorNets核心架构解析 TensorNets采用简洁的函数式接口设计,每个网

gitblog_00286的博客 370

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TensorFlow Hub 库(tensorflow_hub)使用指南:加载、缓存与复用预训练模型

`tensorflow_hub` 是 TensorFlow 官方的模型复用库,它让你能够用极少的代码从 tfhub.dev 等来源下载并复用预训练模型,核心入口是 `hub.KerasLayer` API。本文将围绕库的整体使用展开,覆盖模型加载的两种 API(`hub.KerasLayer` 与底层 `hub.load()`)、下载缓存目录的配置、模型句柄类型、TF1/TF2 兼容性、微调以及公

gitblog_01115的博客 453

Tensor2Tensor开源框架详解:打开AI模型训练的新大门

Tensor2Tensor(T2T)是由Google Brain团队开发的深度学习开源框架,基于TensorFlow构建,旨在简化复杂模型的训练过程。该框架的核心优势包括:提供多种预定义模型(如Transformer)、内置常见数据集支持、超参数优化工具以及从研究到生产的完整工具链。T2T采用模块化设计,将"问题"与"模型"分离,支持快速实验不同模型组合。其应用场景涵盖机器翻译、文本摘要、图像生成和语音识别等领域。相比OpenNMT、Fairseq等同类框架,T2T更

kernelcraft的博客 1013

调用python训练的模型_TensorFlow 调用预训练好的模型—— Python 实现

TensorFlow 预训练好的模型被保存为以下四个文件 data 文件是训练好的参数值,meta 文件是定义的神经网络图,checkpoint 文件是所有模型的保存路径,如下所示,为简单起见只保留了一个模型。model_checkpoint_path: "/home/senius/python/c_python/test/model-40"all_model_checkpoint_paths:...

weixin_36228334的博客 390

Hugging Face预训练模型加载全攻略:从标识符到验证的实践指南

在自然语言处理领域,预训练模型已成为核心技术范式,其通过大规模数据预训练获得通用语言表示能力。其工作原理基于Transformer架构,通过自注意力机制捕捉文本长距离依赖关系。这一技术的核心价值在于显著降低下游任务开发门槛,实现模型能力的快速迁移。在实际工程应用中,开发者常面临模型加载、分词器配置等基础但关键的挑战。例如,针对中文预训练模型,需特别注意其字级别分词特性,避免额外分词工具引入的不匹配;同时,利用Hugging Face镜像可有效解决网络访问问题,提升模型下载效率。掌握这些基础实践,是确保后续微

weixin_30448603的博客 319

【tensorflow】模型的保存(save)、恢复/加载(restore)

1、什么是 tensorflow 模型 当你训练完一个神经网络,你可能会想要保存这个网络,以便将来拿来使用或直接用于其他数据的 deploy, tensorflow 模型包括:已训练并优化的权重参数,网络结构和 graph。 tensorflow 模型文件包括两大块: meta graph :序列化缓冲文件,保存完整的网络结构,graph ,即 all variables, oper...

weixin_42338058的博客 1817

tensorflow官方预训练模型下载网址

tensorflow官方预训练模型下载网址: https://github.com/tensorflow/models/tree/master/research/slim

qq_36201400的博客 1289

Tensor2Tensor 数据流全解析:从数据生成到训练、评估与解码的完整生命周期

本篇技术指南以 Tensor2Tensor(T2T)的官方文档 "T2T: Life of an Example" 为核心骨架,完整梳理一条训练样本从磁盘上的原始数据,历经数据生成、输入管线(input pipeline)、模型构建、Estimator/Experiment 调度,直至最终解码(decoding)的完整旅程。读者读完本文后,将掌握 T2T 各核心组件的职责边界、`Problem`

gitblog_00323的博客 892

erwin模型怎么保存_TensorFlow模型冷冻以及为什么tensor名字要加:0

TensorFlow模型冷冻以及为什么tensor名字要加:0?This article was original written by Jin Tian, welcome re-post, first come with https://jinfagang.github.io . but please keep this copyright info, thanks, any question ...

weixin_39823269的博客 211

TensorFlow Hub 中的 TF2 SavedModel:加载、创建与微调完整指南

TensorFlow 2 的 [SavedModel 格式](https://link.gitcode.com/i/8a8199d3adc2291c187b8ae3a9c21505) 是 TensorFlow 官方推荐的共享预训练模型与模型片段的序列化格式,也是 TensorFlow Hub 在 TF2 时代的主推资产类型。本文将基于 tensorflow_hub 库的 `hub.load()`

gitblog_00115的博客 418
上一篇: 简易网页搭建小记
下一篇: 【pytorch】RuntimeError: cublas runtime error 或者 RuntimeError: cublas runtime error
dongtuu
博客等级 码龄10年 9粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值