学习笔记tf050:tensorflow源代码解析

利炳根 利炳根     2022-09-16     402

关键词:

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

学习笔记tf042:tf.learn分布式estimator深度学习estimator

TF.Learn,TensorFlow重要模块,各种类型深度学习及流行机器学习算法。TensorFlow官方ScikitFlow项目迁移,谷歌员工IlliaPolosukhin、唐源发起。Scikit-learn代码风格,帮助数据科学从业者更好、更快适应接受TensorFlow代码。囊括许多TensorFlow... 查看详情

学习tf:《tensorflow技术解析与实战》pdf+代码

TensorFlow是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一。《TensorFlow技术解析与实战》从深度学习的基础讲起,深入TensorFlow框架原理、模型构建、源代码分析和网络实现等各个方面。分为基础篇、实战篇和提... 查看详情

tensorflow学习笔记一(代码片段)

1、tensorflow中的数据类型importtensorflowastfimportnumpyasnp#张量可以是数字、列表、ndarray#使用列表创建张量print(tf.constant([2,3]))print(tf.constant([[2,3],[1,4]]))#tensorflow2默认使用Eager动态图机制print(type(tf.constant([[2,3],[1,4] 查看详情

tensorflow实战google深度学习框架笔记codepart(代码片段)

深层神经网络线性模型的局限性激活函数实现去线性化a=tf.nn.relu(tf.matmul(x,w1)+biases1)y=tf.nn.relu(tf.matmul(a,w2)+biases2)经典损失函数#计算交叉熵cross_entropy=-tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,le-10,1.0)))#tf.clip_by_value样例 查看详情

学习笔记tf023:下载缓存属性字典惰性属性覆盖数据流图资源

确保目录结构存在。每次创建文件,确保父目录已经存在。确保指定路径全部或部分目录已经存在。创建沿指定路径上不存在目录。下载函数,如果文件名未指定,从URL解析。下载文件,返回本地文件系统文件名。如果文件存在... 查看详情

tensorflow学习笔记一(代码片段)

1、tensorflow中的数据类型importtensorflowastfimportnumpyasnp#张量可以是数字、列表、ndarray#使用列表创建张量print(tf.constant([2,3]))print(tf.constant([[2,3],[1,4]]))#tensorflow2默认使用Eager动态图机制print(type(tf.constant([[2,3],[1,4]])))#使用numpy数组创建... 查看详情

学习笔记tf044:tf.contrib组件统计分布layer性能分析器tfprof

...根据反馈意见改进性能,改善API友好度,API稳定后,移到TensorFlow核心模块。生产代码,以最新官方教程和API指南参考。统计分布。TF.contrib.ditributions模块,Bernoulli、Beta、Binomial、Gamma、Ecponential、Normal、Poisson、Uniform等统计分布,... 查看详情

tensorflow函数学习笔记

##tf.Variable(??)  创建tf变量##tf.matmul(w,x)    矩阵乘法w=tf.Variable([[0.5,1.0]])x=tf.Variable([[2.0],[1.0]])y=tf.matmul(w,x)init_op=tf.global_variables_initializer()withtf.Ses 查看详情

tensorflow学习笔记

tensorflow一些函数:1、tf.ones(shape,type=tf.float32,name=None)   tf.ones([2,3],int32)==>[[1,1,1],[1,1,1]] 2、tf.zeros(shape,type=tf.float32,name=None)   tf.zeros([2,&nb 查看详情

学习笔记tf043:tf.learn机器学习estimatordataframe监督器monitors

线性、逻辑回归。input_fn()建立简单两个特征列数据,用特证列API建立特征列。特征列传入LinearClassifier建立逻辑回归分类器,fit()、evaluate()函数,get_variable_names()得到所有模型变量名称。可以使用自定义优化函数,tf.train.FtrlOptimiz... 查看详情

学习笔记tf039:tensorboard

首先向大家和《TensorFlow实战》的作者说句不好意思。我现在看的书是《TensorFlow实战》。但从TF024开始,我在学习笔记的参考资料里一直写的是《TensorFlow实践》,我自己粗心搞错了,希望不至于对大家造成太多误导。TensorBoard,Te... 查看详情

学习笔记tf037:实现强化学习策略网络

强化学习(ReinforcementLearing),机器学习重要分支,解决连续决策问题。强化学习问题三概念,环境状态(EnvironmentState)、行动(Action)、奖励(Reward),目标获得最多累计奖励。强化学习模型根据环境状态、行动和奖励,学习出最佳策略... 查看详情

学习笔记tf025:自编码器

传统机器学习依赖良好的特征工程。深度学习解决有效特征难人工提取问题。无监督学习,不需要标注数据,学习数据内容组织形式,提取频繁出现特征,逐层抽象,从简单到复杂,从微观到宏观。稀疏编码(SparseCoding),基本结... 查看详情

springmvc学习笔记2.1《自定参数解析handlermethodargumentresolver》(代码片段)

SpringMVC学习笔记2.1《自定参数解析HandlerMethodArgumentResolver》自定义对象解析Hero类型参数注册解析器参考资料自定义对象@DatapublicclassHeroprivateLongid;privateStringname;privateintage;privateList<Poem>poems;publicHero(Stringna 查看详情

springmvc学习笔记2.1《自定参数解析handlermethodargumentresolver》(代码片段)

SpringMVC学习笔记2.1《自定参数解析HandlerMethodArgumentResolver》自定义对象解析Hero类型参数注册解析器参考资料自定义对象@DatapublicclassHeroprivateLongid;privateStringname;privateintage;privateList<Poem>poems;publicHero(Stringna 查看详情

学习笔记tf063:tensorflowdebugger

TensorFlowDebugger(tfdbg),TensorFlow专用调试器。用断点、计算机图形化展现实时数据流,可视化运行TensorFlow图形内部结构、状态。有助训练推理调试模型错误。https://www.tensorflow.org/programmers_guide/debugger。常见错误类型,非数字(nan)、... 查看详情

学习笔记tf038:实现估值网络

Q-Learning,学习Action对应期望值(ExpectedUtility)。1989年,Watkins提出。收敛性,1992年,Watkins和Dayan共同证明。学习期望价值,从当前一步到所有后续步骤,总期望获取最大价值(Q值、Value)。Action->Q函数,最佳策略,在每个state下,... 查看详情

学习笔记tf047:playgroundtensorboard

PlayGround。http://playground.tensorflow.org。教学目的简单神经网络在线演示、实验图形化平台。可视化神经网络训练过程。在浏览器训练神经网络。界面,数据(DATA)、特征(FEATURES)、神经网络隐藏层(HIDDENLAYERS)、层中连接线、输出(OUTPUT)... 查看详情