TensorFlow 的常用模块介绍
一、总结
一句话总结:
Module:tf.train:这个模块主要是用来支持训练模型的
Module:tf.nn:神经网络的功能支持模块,这是最常用到的一个模块,比如用于构建经典的卷积网络,它下面还包含了 rnn_cell 的子模块,用于构建循环神经网络;
Module:tf.summary:主要用来配合 tensorboard 展示模型的信息,比如tf.summary.text
Module:tf:TensorFlow 还把那些经常使用的 Tensor 操作功能直接放在了 tf 下面,包括了:Maths、Array、Matrix 相关的操作,例如算术操作、张量(矩阵)操作、数据类型转换等等
二、TensorFlow 的常用模块介绍
转自或参考:TensorFlow 的常用模块介绍
https://zhuanlan.zhihu.com/p/32198400
在使用 TensorFlow 的时候会遇到一个问题,就是不知道要使用的功能在哪个模块中,比如是在 nn 的模块或者 contrib 的模块,所以本文梳理下常用到的四个模块的功能。
Module: tf.nn
神经网络的功能支持模块,这是最常用到的一个模块,用于构建经典的卷积网络,它下面还包含了 rnn_cell 的子模块,用于构建循环神经网络;挑几个它下面包含的常用函数看看:
- avg_pool(...): 平均池化
- batch_normalization(...): 批标准化
- bias_add(...): 添加偏置
- conv2d(...): 2维卷积
- dropout(...): 随机丢弃神经网络单元
- relu(...): relu 激活层
- sigmoid_cross_entropy_with_logits(...): sigmoid 激活后的交叉熵
- softmax(...): softmax 激活层
可以看到,基本所有经典神经网络的操作都放在了这个模块。
Module: tf.contrib
这个模块最常用到的是它的 slim 子模块,它的官方的解释是这样的:
contrib module containing volatile or experimental code.
也就是说,所有的易于变动的,或者说实验性质的功能就放在这个模块里面;所以它下面是有着及其丰富的功能子模块的,从中也可一窥 TensorFlow 后续的发展,所以看看它下面包含的全部子模块:
bayesflow
贝叶斯计算cloud
云操作cluster_resolver
集群求解compiler
控制 Tensorflow/XLA JIT 编译器copy_graph
在不同的计算图之间复制元素crf
条件随机场cudnn_rnn
Cudnn 层面的循环神经网络操作data
用于构造输入数据的流水线decision_trees
决策树相关模块deprecated
记录已经或将被替换的summary函数distributions
各种统计分布相关的操作estimator
自定义标签与预测的对错的度量方式factorization
聚类以及因子分解ffmpeg
用 FFmpeg 处理声音文件framework
框架类工具,包含了变量操作、命名空间、checkpoint 操作gan
对抗生成相关graph_editor
计算图的操作grid_rnn
GridRNN 相关image
图像操作input_pipeline
输入流水线integrate
求解常微分方程keras
Keras 相关 APIkernel_methods
核映射相关方法kfac
KFAC 优化器labeled_tensor
有标签的 Tensorlayers
类似 nn 里面的函数,一些经典 CNN 方法的重构learn
类似 ski-learn 的 高级 APIlegacy_seq2seq
RNN 模型用于序列数据linalg
线性代数相关linear_optimizer
训练线性模型、线性优化器lookup
构建快速查找表losses
loss 相关memory_stats
设备内存使用情况meta_graph_transform
计算图转换metrics
各种度量模型表现的方法nccl
一些收集结果的操作ndlstm
ndlstm 相关nn
tf.nn 某些方法的其他版本opt
某些优化器的其他版本predictor
构建预测器reduce_slice_ops
切片约减remote_fused_graph
module: Remote fused graph ops python library.resampler
重抽样rnn
其他的循环神经网络操作saved_model
更加易用的模型保存、继续训练、模型转换seq2seq
序列解码以及序列 losssession_bundle
signal
信号处理相关slim
contrib 主模块的交互方式,主要入口solvers
贝叶斯计算sparsemax
稀疏概率激活函数及相关 lossspecs
specs ops.staging
分段输入stat_summarizer
查看运行状态stateless
伪随机数tensor_forest
随机森林tensorboard
可视化工具testing
单元测试工具tfprof
查看模型细节的工具timeseries
时间序列工具tpu
TPU 配置training
训练及输入相关工具util
Tensors 处理相关工具
可以看到,里面的东西基本涵盖了 TensorFlow 所有的功能,但是总体感觉各个功能还是有点混乱。
Module: tf.train
这个模块主要是用来支持训练模型的,照样挑几个它下面包含的常用类和函数看看:
class AdadeltaOptimizer
: Adadelta 优化器class AdamOptimizer
: Adam 优化器class Coordinator
: 线程管理器class Example
tfrecord 的生成模板class ExponentialMovingAverage
: 指数移动平均class GradientDescentOptimizer
: 梯度下降优化器class MomentumOptimizer
: 动量优化器class NanTensorHook
: loss 是否为 NaN 的捕获器class QueueRunner
: 入队队列启动class RMSPropOptimizer
: RMSProp 优化器class Saver
: 保存模型和变量类NewCheckpointReader(...)
checkpoint 文件读取batch(...)
: 生成tensors
batchcreate_global_step(...)
: 创建 global stepget_checkpoint_state(...)
: 从 "checkpoint" 文件返回模型状态init_from_checkpoint(...)
: 从 checkpoint 文件初始化变量latest_checkpoint(...)
: 寻找最后一次的 checkpoint 文件list_variables(...)
: 返回 checkpoint 文件变量为列表load_variable(...)
: 返回 checkpoint 文件某个变量的值match_filenames_once(...)
: 寻找符合规则的文件名称shuffle_batch(...)
: 创建随机的 Tensor batchstart_queue_runners(...)
: 启动计算图中所有的队列
可以看到,主要包含了模型优化器、tfrecord 数据准备、模型保存、模型读取四个大类的功能。
Module: tf.summary
主要用来配合 tensorboard 展示模型的信息,几个常用类和函数如下:
class FileWriter
:Summary
文件生成类class Summary
Summary 类get_summary_description(...)
: 获取计算节点信息histogram(...)
: 展示变量分布信息image(...)
: 展示图片信息merge(...)
: 合并某个 Summary 信息merge_all(...)
: 合并所有的各处分散的 Summary 信息到默认的计算图scalar(...)
: 展示某个标量的值text(...)
: 展示文本信息
这个模块比较简单,但是使用时有些地方还是要注意,这个以后专门用一篇文章来写。
常用函数和方法
TensorFlow 还把那些经常使用的 Tensor 操作功能直接放在了 tf 下面,包括了:
Maths、Array、Matrix 相关的操作,也就是例如算术操作、张量(矩阵)操作、数据类型转换、矩阵的变形、切片、合并、规约、分割、序列比较与索引提取等常用功能。
总体来说,了解了 TensorFlow 这几个大的常用模块功能后,再去使用起来才会感到逻辑清晰一点。