学习笔记TF050:TensorFlow源代码解析

TensorFlow目录结构。

ACKNOWLEDGMENTS #TensorFlow版本声明
ADOPTERS.md #使用TensorFlow的人员或组织列表
AUTHORS #TensorFlow作者的官方列表
BUILD
CONTRIBUTING.md #TensorFlow贡献指导
ISSUE_TEMPLATE.md #提ISSUE的模板
LICENSE #版权许可
README.md
RELEASE.md #每次发版的change log
WORKSPACE #配置移动端开发环境
bower.BUILD
configure
models.BUILD
tensorflow #主目录
third_party #第三方库,包括eigen3(特征运算,SVD、LU分解等)、gpus(支持cuda)、hadoop、jpeg、llvm、py、sycl
tools #构建cuda支持
util

tensorflow目录结构:

BUILD
__init__.py
c
cc #采用C++进行训练的亲样例
compiler
contrib #将常用功能封装在一起高级API
core #C++实现主要目录
examples #各种示例
g3doc #针对C++、Python版本代码文档
go
java
opensource_only #声明目录
python #Python实现主要目录
stream_executor #流处理
tensorboard #App、Web支持,以及脚本支持
tensorflow.bzl
tf_exported_symbols.lds
tf_version_script.lds
tools #工具杂项
user_ops
workspace.bzl

contirb目录。保存常用功能封装高级API。不是官方支持。高级API完善后被官方迁移到核心TensorFlow目录或去掉。部分包(package)在https://github.com/tensorflow/models 有更完整实现。
framework:很多函数在这里定义(get_varibles、get_global_step),一些废弃或不推荐(deprecated)函数。
layers:initializers.py,变量初始化函数。layers.py,层操作和权重偏置变量函数。optimizers.py,损失函数和global_step张量优化器操作。regularizers.py,带权重正则化函数。summaries.py,摘要操作添加到tf.GraphKeys.SUMMARIES集合中的函数。
learn:使用TensorFlow进行深度学习高级API,训练模型、评估模型、读取批处理数据、队列功能API封装。
rnn:额外RNN Cell,对RNN隐藏层改进,LSTMBlockCell、GRUBlockCell、FusedRNNCell、GridLSTMCell、AttentionCellWrapper。
seq2seq:建立神经网络seq2seq层和损失函数操作。
slim:TensorFlow-Slim(TF-Slim),定义、训练、评估TensorFlow复杂模型轻量级库。TF-Slim与TensorFlow原生函数和tf.contrib其他包自由组合。TF-Slim已逐渐迁移到TensorFlow开源Models,里面有广泛使用卷积神经网络图像分类模型代友,可以从头训练模型或预测训练模型开始微调。

core目录。C语言文件,TensorFlow原始实现。

BUILD
common_runtime #公共运行库
debug
ditributed_runtime #分布式执行模块,含有grpc session、grpc worker、grpc master
example
framework #基础功能模块
graph
kernels #核心操作在CPU、CUDA内核实现
lib #公共基础库
ops
platform #操作系统实现相关文件
protobuf #.proto文件,用于传输时结构序列化
public #API头文件目录
user_ops
util

Protocol Buffers,谷歌公司创建的数据序列化(serialization)工具,结构化数据序列化,数据存储或RPC数据交换格式。定义协议缓冲区,生成.pb.h和.pb.cc文件。定义get、set、序列化、反序列化函数。TensorFlow核心proto文件graph_def.proto、node_def.proto、op_def.proto保存在framework目录。构图时先构建graph_def,存储下来,在实际计算时再转成图、节点、操作内存对象。
tensorflow-1.1.0/tensorflow/core/framework/node_def.proto,定义proto文件。node_def.proto定义指定设备(device)操作(op)、操作属性(attr)。
framework 目录还有node_def_builder.h、node_def_builder.cc、node_def_util.h、node_def_util_test.cc。在C++里操作node_def.proto的protobuf结构。

examples目录,深度学习例子,MNIST、Word2vec、Deepdream、Iris、HDF5。TensorFlow在Android系统上的移动端实现。扩展.ipynb文档教程,jupyter打开。

g3doc。存放Markdown维护的TensorFlow文档,离线手册。g3doc/api_docs目录内容从代码注释生成,不应该直接编辑。脚本tools/docs/gen_docs.sh生成API文档。无参数调用,只重新生成Python API文档,操作文档,包括Python、C++定义。传递-a,运行脚本重新生成C++ API文档,需要完装doxygen。必须从tools/docs目录调用。

python目录。激活函数、卷积函数、池化函数、损失函数、优化方法。

tensorboad目录。实现TensorFlow图表可视化工具代码,代码基于Tornado实现网页端可视化。http://www.tornadoweb.org/en/stable/

TensorFlow源代码学习方法。
1)了解自己研究的基本领域,图像分类、物体检测、语音识别,了解领域所用技术,卷积神经网络(convolutional neural network,CNN)、循环神经网络(recurrent neural network,RNN),知道实现基本原理。
2)运行GitHub对应基本模型,目录结构:

AUTHORS
CONTRIBTING.md
LICENSE
README.md
WORKSPACE
autoencoder
compression
differential_privacy
im2txt
inception
lm_1b
namignizer
neural_gpu
neural_programmer
next_frame_prdiction
resnet
slim
street
swivel
syntaxnet
textsum
transformer
tutorials
video_prediction

计算机视觉,compression(图像压缩)、im2txt(图像描述)、inception(对ImageNet数据集用Inception V3架构训练评估)、resnet(残差网络)、slim(图像分类)、street(路标识别或验证码识别)。
自然语言处理,lm_1b(语言模型)、namignizer(起名字)、swivel(Swivel算法转换词向量)、syntaxnet(分词和语法分析)、textsum(文本摘要)、tutorials目录word2vec(词转换向量)。
教科书式代码,看懂学懂有助今后自己实现模型。运行模型,调试、调参。完整读完MNIST或CIFAR10整个项目逻辑,就掌握TensorFlow项目架构。
slim目录。TF-Slim图像分类库。定义、训练、评估复杂模型轻量级高级API。训练、评估lenet、alexnet、vgg、inception_v1、inception_v2、inception_v3、inception_v4、resnet_v1、resnet_v2,模型位于slim/nets:

alexnet.py
alexnet_test.py
cifarnet.py
inception.py
inception_resnet_v2.py
inception_resnet_v2_test.py
inception_utils.py
inception_v1.py
inception_v1_test.py
inception_v2.py
inception_v2_test.py
inception_v3.py
inception_v3_test.py
inception_v4.py
inception_v4_test.py
lenet.py
nets_factory.py
nets_factory_test.py
overfeat.py
overfeat_test.py
resnet_utils.py
resnet_v1.py
resnet_v1_test.py
resnet_v2.py
resnet_v3_test.py
vgg.py
vgg_test.py

TF-Slim包含脚本从头训练模型或从预先训练网络开始训练模型并微调,slim/scripts:

finetune_inception_v1_on_flowers.sh
finetune_inception_v3_on_flowers.sh
train_cifarnet_on_cifar10.sh
train_lenet_on_mnist.sh

TF-Slim包含下载标准图像数集,转换TensorFlow支持TFRecords格式脚本,slim/datasets:

cifar10.py
dataset_factory.py
dataset_utils.py
download_and_convert_cifar10.py
download_and_convert_flowers.py
download_and_convert_mnist.py
flowers.py
imagenet.py
mnist.py

3)结合要做的项目,找到相关论文,自己用TensorFlow实现论文内容。质的飞跃。

参考资料:
《TensorFlow技术解析与实战》

欢迎付费咨询(150元每小时),我的微信:qingxingfengzi

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

推荐阅读更多精彩内容

  • 年前有朋友推荐我Flexbox Froggy 青蛙游戏学习flex . 一直没有玩。然后一直觉得flex是个新鲜前...
    Songlairui阅读 2,045评论 0 3
  • 进入高中一个月了,后天就要月考了,我知道我一定会考砸,是的,一定会,我长这么大,还没对什么事这么肯定过。这一个...
    时年初遇阅读 145评论 0 0
  • 我们去最美的地方去旅行 阝
    橙阝_3d1b阅读 171评论 0 0
  • 今天约了付老师一家,草莽哥一家,南瓜妈妈母子,大家商量中午饭一起去吃南湖的一家柴火房的烧鹅,饭后带孩子们到...
    淳淳的妈妈阅读 962评论 2 4
  • ""爱情是大自然最高明的骗术,婚姻是拆穿这场骗局的手段,最终走向毁灭。走进婚姻是不幸的,但没有婚姻也是不幸...
    空山灵雨_f5a7阅读 297评论 2 0