首先关于SavedModel格式的介绍见Tensorflow SavedModel。
Tensorflow源代码中关于SavedModel加载的函数定义文件位置如下图所示。

最顶层的函数叫做LoadSavedModel,其中调用了LoadSavedModelInternal。

进入LoadSavedModelInternal,其中加载参数的主要操作调用了RestoreSession。

进入RestoreSession,可见到函数中主要进行了两个操作,一个是查找restore_op,并使用session执行restore_op来恢复参数,另一个是查找saved_model里面定义的init op(通常是NoOp)并使用session执行init op,我们主要关注restore_op。

查找restore_op,得到位置如下图所示。

查看restore_op,可见到其中主要调用了RestoreTensor函数来加载Tensor。

经查找RestoreTensor函数所在文件位置如下图所示。

在此文件中,我们发现有两个版本的RestoreTensor函数,如下图所示,其中RestoreTensor函数是每次restore一个tensor,而RestoreTensorV2函数一次restore所有的tensor,省去了节点调度的开销,我们主要看RestoreTensorV2函数。


进入RestoreTensorV2函数,可以看到这里将大的Tensor使用ThreadPool进行加载,而将小的Tensor进行inline加载。


而这里的op的类型都是RestoreOp,进入RestoreOp,可以看到run函数和run_with_new_reader函数,其中run_with_new_reader调用了run函数,只不过预先构造了一个新的reader来作为参数传给run函数。

进入run函数,可以看到其中主要调用了allocate_output函数来分配Tensor。

查询得到allocate_output函数的定义文件所在位置如下图所示。

进入allocate_output函数,可以看到其主要就是构造了一个新的Tensor并返回了指针。

完成了内存分配后,就需要读取模型文件加载参数了,加载模型文件使用的是BundleReader类。

BundleReader类的定义在tensorflow/core/util/tensor_bundle/tensor_bundle.cc中。

主要使用LookUp函数来恢复张量。

而在LookUp函数中主要调用了GetValue函数。

Tensorflow加载SavedModel模型过程源码阅读相关推荐

  1. cesium加载BIM模型

    自己尝试用cesium引擎加载BIM模型,操作步骤如下: 第一步: 下载一个BIM模型 第二步: 将BIM模型转换成FBX格式 转成gltf格式 在如下网站进行转换: https://products ...

  2. TensorFlow 加载多个模型的方法

    采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢? 原文:https://bretahajek.com/2017/04/importing-multipl ...

  3. TensorFlow 加载多个模型的方法 - 知乎 https://zhuanlan.zhihu.com/p/53642222

    TensorFlow 加载多个模型的方法 - 知乎 什么是Tensorflow模型? 当你训练好一个神经网络后,你会想保存好你的模型便于以后使用并且用于生产.因此,什么是Tensorflow模型?Te ...

  4. 加载tf模型 正确率很低_深度学习模型训练全流程!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集. ...

  5. python加载模型_解决python 无法加载downsample模型的问题

    downsample 在最新版本里面修改了位置 from theano.tensor.single import downsample (旧版本) 上面以上的的import会有error raise: ...

  6. Android加载3D模型的学习笔记

    篇章目标要点 3D模型的使用最早是在游戏领域广泛使用的,随着技术的发展,其他工业领域也在逐步引入3D相关的技术设计.本文是结合初学3D模型的读取和显示总结的心得,本文作为序列的第一篇介绍,重点会阐述3 ...

  7. VTK(The Visualization Toolkit)加载stl模型

    VTK系列文章目录 文章目录 VTK系列文章目录 前言 一.创建工程 1.工程配置 2.编写代码 运行效果 源码下载 前言 在上一节中主要记录了vtk的编译 下面说说我的第一个VTK示例:使用VTK( ...

  8. qt使用assimp加载模型_iOS使用assimpKit加载FBX模型步骤详解

    研究背景 体积:一个.dae模型大概有1M那么大 而.fbx模型0.5M 现状 xcode现在不能直接读取.fbx模型 方案 1.使用assimpKit加载 2.使用Wish3D加载 结果 1.使用a ...

  9. Unity加载倾斜摄影模型/激光点云,开源

    [重大更新]现已支持WebGL 业余时间尝试了下用Unity加载倾斜摄影模型/激光点云,目前支持Bentley ContextCapture生成的3MX格式 源码见 https://github.co ...

  10. Qt Quick 3D系列(一):加载3d模型

    如果我们想在QML中使用3D且你之前没有三维程序开发的基础,使用Qt Quick 3D是个不错的选择,下面我介绍如何使用Qt Quick 3D加载3d模型.注意:Qt Quick 3D从Qt 5.15 ...

最新文章

  1. Mastering Algorithms with C中文版附带源码说明
  2. VS2017 Pro未能找到路径“……\bin\roslyn\csc.exe”的解决方案
  3. WINXP 提升速度
  4. boost::fusion::extension::adt_attribute_proxy用法的测试程序
  5. 命令行中只用scala来运行一个spark应用
  6. 每日一笑 | 程序员千万不能轻易去网吧!
  7. pc端html轮播带滑块,swiper.js简单快速实现轮播滑动(兼容PC端、移动端)
  8. php返回json数据函数实例
  9. PHP程序员五大兵器排行
  10. GNU Linux系统变量(sysctl配置命令)综合使用
  11. 阿里双十一技术揭秘——双十一 手淘技术用了这几招
  12. 如何防御xss?HTML编码和JS编码
  13. 天涯明月刀服务器维护事假,《天涯明月刀ol》12月16日服务器维护公告
  14. c语言打印五角星图案解锁教程,[星星图案解锁设计教程]PS制作星星图案教程
  15. 苹果iPad mini 5蜂窝数据版上架:3896元起
  16. signature=461282e191fe3d72a8b43e5b831644fb,Proposed Graphene Nanospaser
  17. 《论文写作》课程收获
  18. 光功率 博科交换机_交换机查看光模块型号及收发光功率命令
  19. 台式机通过网线连接笔记本的wifi网络
  20. mysql neq什么意思_【知识科普】标准中的Eqv、Idt和Neq分别代表什么?

热门文章

  1. 八类网线和七类网线的区别_超6类和7类网线的区别
  2. 《SEM长尾搜索营销策略解密》一一1.1 做有个性的账户
  3. 《SEM长尾搜索营销策略解密》一一2.8 长尾虽好,但核心不可或缺
  4. jpa报错:Provided id of the wrong type for class
  5. HTML基础-跟着李南江学编程
  6. java屏幕共享实现原理_远程桌面共享技术实现
  7. attiny85(digispark)零延迟启动探究
  8. python数据科学包第三天(股票数据分析、时间事件日志)
  9. python经纬度转换xy坐标公式_python 经纬度和平面坐标相互转换利用米勒坐标系
  10. 黑色星期五c语言程序,黑色星期五C语言实现