TensorFlow Lite 结构概览

TensorFlow Lite 和 TensorFlow 的关系

1.PNG

下面将着重介绍 模型结构格式(Model Format)解析器概况(Interpreter)
2.PNG

TensorFlow Lite Model File

Model File 的代码位于 tensorflow-master/tensorflow/lite/schema文件夹中,模型文件的主结构如下 Model 结构体所示

3.PNG

Model 结构体定义了该模型用到的算子 operator_codes
4.PNG

Model 结构体中的 subgraphs 定义了各个子图,其中第一个子图 subgraphs[0] 为主图

5.PNG

Model 结构体中的 buffers为数据存储区域,主要用来存放模型权重

6.PNG

SubGraph

SubGraph 是 Model 里最重要的结构体,它定义了图的具体结构

7.PNG

SubGraph 的 tensors 定义了子图中的各个 Tensor
8.PNG

SubGraph 的 inputs和outputs根据索引值的形式定义了哪些 tensor 负责输入输出
9.PNG

SubGraph 的 operators 定义了子图中的各个算子
10.PNG

Tensor 的具体结构

Tensor 结构体包含了维度(shape)信息,
数据类型(type), 以及 buffer 位置

11.PNG

Tensor 中的 buffer 通过索引值的形式指出了此 Tensor 使用了哪个具体 Buffer

12.PNG

Operator 的具体结构

Operator 是 SubGraph中最重要的结构体,它起到的联立关系最终定义了图的结构

13.PNG

Operator 中的 opcode_index 通过索引值的形式指明了该 operator 所对应的具体算子
14.PNG

Operator 中的 inputs 和 outputs 是 tensors 的索引值,指明了该 operator 的输入输出,这样我们可以成功地将数据流图以 FlatBuffer 的形式表达出来
15.PNG

Interpreter 细节

数据流图可以用(TfLiteTensor)和节点(TfLiteNode)来表达,边就是 Tensor, 节点则为 Operator, 输入边 Tensor 经过节点 Operator 后得到 输出边Tensor

16.PNG

Interpreter (解析器)中实现数据流图的运算概要如下:

  • 首先我们将模型文件通过 mmap 内存映射加载进内存,这样我们在内存里有了Tensors, Operators以及Buffer等内容。
    17.PNG
  • 模型的Buffer一般来说是只读的,通常用来记录权重信息,为了表示那些数值可变的Tensor,我们额外分配了可写的Buffer区域


    18.PNG
  • Interpreter 还包含了具体执行计算的代码,我们称之为 kernel
    19.PNG
  • 模型中的各个 Tensor 被加载为TfLiteTensor 格式,并集中存放在 TfLiteContext中,每个Tensor的指针指向内存映射的只读数据区域或新分配的可写数据区域
    20.PNG
  • 模型中的 Operator 被加载为 TfLiteNode ,它包含了输入输出Tensor的索引值
    21.PNG
  • TfLietNode 对应的操作符存储于 TfLiteRegistration 中,它包含了指向 kernel 的函数指针


    22.PNG
  • OpResolver 负责维护函数指针映射关系


    23.PNG

以上就为TensorFlow Lite Interpreter的核心,在加载模型时我们会确认执行 TfLiteNode 的顺序, TfLiteTensor, TfLiteContext, TfLiteNode, TfLietRegistration 是重要的数据结构

更多细节请阅读以下关键文件:

tensorflow-master/tensorflow/lite/context.h
tensorflow-master/tensorflow/lite/model.h
tensorflow-master/tensorflow/lite/interpreter.h
tensorflow-master/tensorflow/lite/register.h
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容