TensorFlow目录结构。

本文详细介绍了TensorFlow项目的目录结构及各子目录的功能,重点解释了contrib、core、python等关键目录的内容,并提供了TF-Slim高级API的学习路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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技术解析与实战》



作者:利炳根_TensorFlow
链接:https://www.jianshu.com/p/b859b1e6ff5c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
### 绘制TensorFlow模型结构图的方法 在深度学习领域,可视化模型结构有助于理解网络的设计及其工作原理。以下是几种常见的方法来生成或可视化TensorFlow模型结构图。 #### 使用TensorBoard进行模型结构可视化 TensorBoard 是 TensorFlow 提供的一个强大的可视化工具,可以用来监控训练过程中的指标变化以及展示模型架构。要使用 TensorBoard 可视化模型结构,需按照以下方式进行操作: 1. **定义计算图并记录日志** 需要在代码中引入 `tf.summary` 和 `tf.summary.FileWriter` 来保存模型的日志文件。这些日志文件会被 TensorBoard 加载以生成可视化的图形表示[^2]。 下面是一个简单的 Python 脚本示例: ```python import tensorflow as tf # 定义一个简单的神经网络 model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(28, 28)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10) ]) # 将模型写入日志目录 log_dir = "logs/fit" writer = tf.summary.create_file_writer(log_dir) with writer.as_default(): tf.summary.graph(model, step=0) ``` 2. **启动TensorBoard服务** 在命令行中执行以下命令即可打开 TensorBoard 并查看模型结构: ```bash tensorboard --logdir=logs/fit ``` 打开浏览器访问指定地址(通常是 http://localhost:6006),可以看到完整的模型结构图[^5]。 --- #### 利用Graphviz或其他第三方库绘制模型图 除了 TensorBoard 外,还可以借助 Graphviz 或其他绘图工具手动绘制模型结构图。这种方法适用于更灵活的需求场景。 下面是一段基于 Keras 的简单例子,它会自动生成 PNG 图片形式的模型结构图: ```python from tensorflow.keras.utils import plot_model plot_model( model, to_file="model_structure.png", show_shapes=True, show_layer_names=True, rankdir="TB" # 'LR' 表示水平布局;'TB' 表示垂直布局 ) ``` 上述代码将生成一张名为 `model_structure.png` 的图片,其中包含了每一层的具体形状和名称信息[^1]。 --- #### 解析PB文件还原模型结构 当已经拥有经过优化后的 `.pb` 文件时,则可通过解析该二进制文件重新获取原始模型拓扑关系。具体做法如下: 1. 导入必要的依赖项; 2. 编写脚本来读取 PB 数据流图; 3. 输出节点间的连接情况或者渲染成图像格式。 这里给出一段参考性的Python实现片段: ```python import tensorflow.compat.v1 as tf tf.disable_v2_behavior() def load_pb(path_to_pb): with tf.gfile.GFile(path_to_pb, "rb") as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) with tf.Graph().as_default() as graph: tf.import_graph_def(graph_def, name='') return graph graph = load_pb('frozen_inference_graph.pb') for op in graph.get_operations(): print(op.name) # 显示各操作符的名字 ``` 此程序能够遍历整个冻结好的推理引擎内的所有算子,并打印它们各自的标签名[^3]。 --- #### 特征图可视化技术 为了进一步探索深层神经元的行为模式,研究人员经常采用特征映射的方式来揭示隐藏单元所捕捉到的信息本质。例如,在 CNN 中每级滤波器学到的不同纹理样式都可以被提取出来形成一幅幅二维数组状的小块图案集合——即所谓的“Feature Maps”。这类分析手段不仅限于监督分类任务里头,同样也适合无标注数据集上的聚类挖掘作业等等[^4]。 --- ### 总结 综上所述,无论是初学者还是高级开发者都能找到适合自己需求的技术路线去描绘出清晰易懂的张量流动路径图表。推荐优先考虑官方支持度较高的解决方案比如 TensorBoard ,因为它具备良好的兼容性和丰富的插件生态系统可供扩展功能边界之外还能无缝衔接至生产环境当中去实际应用起来更加便捷高效!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值