TensorFlow 的常用模塊介紹
在使用 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 這幾個大的常用模塊功能後,再去使用起來才會感到邏輯清晰一點。
歡迎關注,後續會持續的寫一些關於 TensorFlow 的使用經驗的文章,也是因為工作原因接觸到了谷歌的這個代碼框架,想著既然用了,就用的好點,所以才寫這個文章,也不是科班出身,有不正確的地方敬請指出。
參考資料:https://tensorflow.google.cn/api_docs
推薦閱讀:
※YOLO2:實時目標檢測視頻教程,視頻演示,Android Demo ,開源教學項目,論文。
※當tensorflow模型超過單張顯卡顯存的時候,應該怎麼拆分到多個GPU上運行?
※實踐指南!16位資深行業者教你如何學習使用TensorFlow
TAG:TensorFlow | 人工智慧 |