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

当我们想要改造或者利用某一预训练模型来完成一些其它任务时,一个常用且必备的操作是从指定模型中获取到我们感兴趣的张量(tensor)。

例如我想使用一个已经训练好的CNN模型中间的某一层的结果作为特征向量来完成另一个相关任务,就需要这样的操作。

如何做到?很简单,只需两步:

1.获取到感兴趣张量的名字.

2.使用get_tensor_by_name函数获取

下面详细说明下

1.获取到感兴趣张量的名字

我们知道,张量tensor是由操作operation运行得到的。

因此实际上,你要做的就是,获取到能够生成你想要的tensor的op的名字,无论你用什么方法。

通常情况,有两种方法可以获取到op_name。

1)如果模型是你自己搭建的,你直接可以通过查看搭建网络的源代码来确认op_name。

因此,对于具有关键含义的op,创建时为其自定义一个合适的名字,或者创建scope分组是一个良好的编码习惯。

2)如果你对拿到的模型毫无头绪,参考并修改下面的代码打印出所有的张量信息

with tf.Graph().as_default():config = tf.ConfigProto()sess = tf.Session(config = config)with sess.as_default():meta_path = checkpoint_path + '.meta'saver = tf.train.import_meta_graph(meta_path)saver.restore(sess, checkpoint_path)op_list = sess.graph.get_operations()for op in op_list:print(op.name)print(op.values())

上面的代码会输出类似如下的结果:

...
...
resnet_v1_50/pool5
(<tf.Tensor 'resnet_v1_50/pool5:0' shape=(?, 1, 1, 2048) dtype=float32>,)
Logits/Squeeze
(<tf.Tensor 'Logits/Squeeze:0' shape=(?, 2048) dtype=float32>,)
...
...

剩下需要做的就是基于你对模型结构的理解,找到你想要的张量对应的op_name。

例如,我想要的便是resnet50模型最后一个pooling层摊平后的张量,对应的op_name为‘Logits/Squeeze:0’

2.使用get_tensor_by_name函数获取想要的张量

获取到了op_name,剩下的事情仅仅是调用get_tensor_by_name函数来拿到它,例如:

embedding = tf.get_default_graph().get_tensor_by_name('Logits/Squeeze:0')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息摘要算法之三:SHA256算法分析与实现

前面一篇中我们分析了SHA的原理&#xff0c;并且以SHA1为例实现了相关的算法&#xff0c;在这一片中我们将进一步分析SHA2并实现之。 1、SHA简述 前面的篇章中我们已经说明过&#xff0c;SHA实际包括有一系列算法&#xff0c;分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-…

focal loss的几种实现版本(Keras/Tensorflow)

起源于在工作中使用focal loss遇到的一个bug&#xff0c;我仔细的学习多个靠谱的focal loss讲解及实现版本 通过测试&#xff0c;我发现了这样一个奇怪的现象&#xff0c;几乎每个版本的focal loss实现对同样的输入计算出的loss都是不同的。 通过仔细的比对和思考&#xff0c…

基于ARM Cortex-M和Eclipse的SWO单总线输出

最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关通过SWD的跟踪接口SWO获取ARM Cortex-M相关信息的文章&#xff0c;文章结构明晰&#xff0c;讲解透彻&#xff0c;本人深受启发&#xff0c;特意将其翻译过来供各位同仁参考。当然限于个人水平&#xff0c;有不当之处…

包管理工具conda极简教程

包管理工具conda极简教程 conda的作用 Anaconda是目前非常流行的一个python包管理器&#xff0c;自带很多流行的python库&#xff0c;包括numpy&#xff0c;pandas等&#xff0c;当然还有conda。而Conda是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本…

PID控制器开发笔记之九:基于前馈补偿的PID控制器的实现

对于一般的时滞系统来说&#xff0c;设定值的变动会产生较大的滞后才能反映在被控变量上&#xff0c;从而产生合理的调节。而前馈控制系统是根据扰动或给定值的变化按补偿原理来工作的控制系统&#xff0c;其特点是当扰动产生后&#xff0c;被控变量还未变化以前&#xff0c;根…

借助百度识图爬取数据集

背景 一个能够实际应用的深度学习模型&#xff0c;背后的数据集往往都花费了大量的人力财力&#xff0c;通过聘用标注团队对真实场景数据进行标注生产出来&#xff0c;大多数情况不太可能使用网络来源的图片。但在项目初期的demo阶段&#xff0c;或者某些特定的场合下&#xf…

通过printf从目标板到调试器的输出

最近在SEGGER的博客上看到Johannes Lask写的一篇关于在调试时使用printf函数从目标MCU输出信息到调试器的文章&#xff0c;自我感觉很有启发&#xff0c;特此翻译此文并推荐给各位同仁。当然限于个人水平&#xff0c;有不当之处恳请指正。原文网址&#xff1a;https://blog.seg…

小心使用tf.image.resize_images,填坑经验分享给你

上上周&#xff0c;我在一个项目上线前对模型进行测试时出现了问题&#xff0c;这个问题困扰了我近两周&#xff0c;终于找到了问题根源&#xff0c;做个简短总结分享给你&#xff0c;希望对大家有帮助。 问题描述&#xff1a; 线上线下测试结果不一致&#xff0c;且差异很大…

PID控制器开发笔记之十:步进式PID控制器的实现

对于一般的PID控制系统来说&#xff0c;当设定值发生较大的突变时&#xff0c;很容易产生超调而使系统不稳定。为了解决这种阶跃变化造成的不利影响&#xff0c;人们发明了步进式PID控制算法。 1、步进式PID的基本思想 所谓步进式PID算法&#xff0c;实际就是在设定值发生阶跃…

AutoML 与 Bayesian Optimization 概述

1. AutoML 概述 AutoML是指对于一个超参数优化任务&#xff08;比如规定计算资源内&#xff0c;调整网络结构找到准确率最高的网络&#xff09;&#xff0c;尽量减少人为干预&#xff0c;使用某种学习机制&#xff0c;来调节这些超参数&#xff0c;使得目标问题达到最优。 这…

使用Eclipse进行Makefile项目

最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关在Eclipse中使用Makefile创建项目的文章&#xff0c;文章讲解清晰明了非常不错&#xff0c;所以呢没人将其翻译过来供各位同仁参考。当然限于个人水平&#xff0c;有不当之处恳请指正。原文网址&#xff1a;https://m…

Git commit 常用表情快速查询

git commit 的时候&#xff0c;添加表情符号可以更好的表明本次提交的性质&#xff0c;也更有趣。 常用表情符号如下&#xff1a; emoji emoji代码 commit说明 &#x1f3a8; (调色板) :art: 改进代码结构/代码格式 ⚡️ (闪电) :zap: 提升性能 &#x1f40e; (赛马)…

C语言学习及应用笔记之一:C运算符优先级及使用问题

C语言中的运算符绝对是C语言学习和使用的一个难点&#xff0c;因为在2011版的标准中&#xff0c;C语言的运算符的数量超过40个&#xff0c;甚至比关键字的数量还要多。这些运算符有单目运算符、双目运算符以及三目运算符&#xff0c;又涉及到左结合和右结合的问题&#xff0c;真…

Docker用法整理

Docker教程推荐 两个不错的参考资料&#xff1a; https://yeasy.gitbooks.io/docker_practice/content/introduction/ https://www.cnblogs.com/bethal/p/5942369.html 镜像&#xff1a; 查看镜像 docker images ls 删除镜像 docker image rm <image id> 拉取镜像 …

使用FreeRTOS进行性能和运行时分析

在MCU on Eclipse网站上看到Erich Styger在2月25日发的博文&#xff0c;一篇关于使用FreeRTOS进行性能和运行分析的文章&#xff0c;本人觉得很有启发&#xff0c;特将其翻译过来以备参考。当然限于个人水平&#xff0c;有描述不当之处恳请指正。原文网址&#xff1a;https://m…

生成微信公众号对应二维码的两种简单方法

方法1 在浏览器中打开下面的链接 https://open.weixin.qq.com/qr/code?usernameName 其中Name替换为对应公众号的微信号 例如&#xff0c;我们打算生成公众号 AI算法联盟 的二维码 只需首先关注这个公众号 在其详细信息中&#xff0c;查找到微信号信息&#xff1a;AIReport…

在Amazon FreeRTOS V10中使用运行时统计信息

在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文&#xff0c;一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章&#xff0c;本人觉得很有启发&#xff0c;特将其翻译过来以备参考。原文网址&#xff1a;https://mcuoneclipse.com/2018/08/02/tutorial-using-…

github无法加载图片的解决办法

最近发现我的github上面项目README里面的图片全裂了&#xff0c;一直以为是github最近服务器不稳定。今天通过简单的查询&#xff0c;发现原来这个问题可以解决&#xff0c;但是不能永久有效&#xff0c;之后还会用到&#xff0c;因此记录在这里&#xff0c; 也分享给大家。 解…

leetcode 1.两数之和

题目 链接&#xff1a;https://leetcode-cn.com/problems/two-sum 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复…

C语言学习及应用笔记之二:C语言static关键字及其使用

C语言有很多关键字&#xff0c;大多关键字使用起来是很明确的&#xff0c;但有一些关键字却要相对复杂一些。我们这里要说明的static关键字就是如此&#xff0c;它的功能很强大&#xff0c;相应的使用也就更复杂。 一般来说static关键字的常见用法有三种&#xff1a;一是用作局…