学习笔记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
学习笔记TF050:TensorFlow源代码解析的更多相关文章
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- 学习TF:《TensorFlow技术解析与实战》PDF+代码
TensorFlow 是谷歌公司开发的深度学习框架,也是目前深度学习的主流框架之一.<TensorFlow技术解析与实战>从深度学习的基础讲起,深入TensorFlow框架原理.模型构建. ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...
- C++基础 学习笔记之一:源代码的格式化
C++基础 学习笔记之一:源代码的格式化 1. 源代码中的标记与空白 C++中的语句是以分号表示语句的结束.在C++中空格和回车以及制表符均为相同作用,即三者通常可以互相替代. 例如可以将一个简单的m ...
- 学习笔记TF048:TensorFlow 系统架构、设计理念、编程模型、API、作用域、批标准化、神经元函数优化
系统架构.自底向上,设备层.网络层.数据操作层.图计算层.API层.应用层.核心层,设备层.网络层.数据操作层.图计算层.最下层是网络通信层和设备管理层.网络通信层包括gRPC(google Remo ...
- 学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集
TensorFlow Serving https://tensorflow.github.io/serving/ . 生产环境灵活.高性能机器学习模型服务系统.适合基于实际数据大规模运行,产生多个模型 ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作
生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...
- 学习笔记TF064:TensorFlow Kubernetes
AlphaGo,每个实验1000个节点,每个节点4个GPU,4000 GPU.Siri,每个实验2个节点,8个GPU.AI研究,依赖海量数据计算,离性能计算资源.更大集群运行模型,把周级训练时间缩短到 ...
随机推荐
- Bootstrap 可视化HTML编辑器,summernote
Bootstrap 可视化HTML编辑器之summernote,用其官网上的介绍就是"Super Simple WYSIWYG editor",不过在我看来,与bootstrap中 ...
- CSS: hover选择器的使用
用法1:这个表示的是:当鼠标悬浮在a这个样式上的时候,a的背景颜色设置为黄色 a:hover { background-color:yellow; ...
- ComponentOne 产品经理:为什么要从C1Report迁移到FlexReport
概述 如果你正在使用ComponentOne Enterprise 的Reports for WinForm 报表控件(C1Report),你一定会喜欢更为强大的FlexReport! FlexRep ...
- centos7安装node
centos7安装node 二进制文件安装 node=v10.13.0 file=node-${node}-linux-x64 wget https://nodejs.org/dist/${node} ...
- mac系统删除.DS_Store文件
查找某目录下某类文件 find . -name ".DS_Store" -type f -print # find: 主命令 # . : 当前目录下(可变) # -name: 通过 ...
- angular --- s3core移动端项目(三)
angular.module('myApp') .directive('listActive',functon(){ return { restrict:'A', scope:{ listActive ...
- jmeter+influxdb+grafana性能测试监控
背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...
- CentOS7.x系统中使用Docker时,在存储方面需要注意的问题
简述: 1.Docker 1.12.6/v17.03文档中CentOS7系统下安装时,明确说明,用于生产时,必须使用devicemapper驱动的direct-lvm模式,需要我们提前准备好块设备,以 ...
- 《Practical Vim》第八章:利用动作命令在文档中移动
面向单词的移动 定义: Vim 提供了面向单词的动作命令,用于将光标正向/反向移动一个单词; 功能 命令 正向移动到下一单词开头 w 反向移动到上一单词的开头 b 正向移动到下一单词(当前单词)的结尾 ...
- Mysql5.7出现this is incompatible with sql_mode=only_full_group_by
vi /etc/my.cnf #编辑mysql配置文件 在 [mysqld]和[mysql]下添加 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZE ...