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_rnnCudnn 層面的循環神經網絡操作data用於構造輸入數據的流水線decision_trees決策樹相關模塊deprecated記錄已經或將被替換的summary函數distributions各種統計分布相關的操作estimator自定義標簽與預測的對錯的度量方式factorization聚類以及因子分解ffmpeg用 FFmpeg 處理聲音文件framework框架類工具,包含了變量操作、命名空間、checkpoint 操作gan對抗生成相關graph_editor計算圖的操作grid_rnnGridRNN 相關image圖像操作input_pipeline輸入流水線integrate求解常微分方程kerasKeras 相關 APIkernel_methods核映射相關方法kfacKFAC 優化器labeled_tensor有標簽的 Tensorlayers類似 nn 里面的函數,一些經典 CNN 方法的重構learn類似 ski-learn 的 高級 APIlegacy_seq2seqRNN 模型用於序列數據linalg線性代數相關linear_optimizer訓練線性模型、線性優化器lookup構建快速查找表lossesloss 相關memory_stats設備內存使用情況meta_graph_transform計算圖轉換metrics各種度量模型表現的方法nccl一些收集結果的操作ndlstmndlstm 相關nntf.nn 某些方法的其他版本opt某些優化器的其他版本predictor構建預測器reduce_slice_ops切片約減remote_fused_graphmodule: Remote fused graph ops python library.resampler重抽樣rnn其他的循環神經網絡操作saved_model更加易用的模型保存、繼續訓練、模型轉換seq2seq序列解碼以及序列 losssession_bundlesignal信號處理相關slimcontrib 主模塊的交互方式,主要入口solvers貝葉斯計算sparsemax稀疏概率激活函數及相關 lossspecsspecs ops.staging分段輸入stat_summarizer查看運行狀態stateless偽隨機數tensor_forest隨機森林tensorboard可視化工具testing單元測試工具tfprof查看模型細節的工具timeseries時間序列工具tpuTPU 配置training訓練及輸入相關工具utilTensors 處理相關工具
可以看到,里面的東西基本涵蓋了 TensorFlow 所有的功能,但是總體感覺各個功能還是有點混亂。
Module: tf.train
這個模塊主要是用來支持訓練模型的,照樣挑幾個它下面包含的常用類和函數看看:
class AdadeltaOptimizer: Adadelta 優化器class AdamOptimizer: Adam 優化器class Coordinator: 線程管理器class Exampletfrecord 的生成模板class ExponentialMovingAverage: 指數移動平均class GradientDescentOptimizer: 梯度下降優化器class MomentumOptimizer: 動量優化器class NanTensorHook: loss 是否為 NaN 的捕獲器class QueueRunner: 入隊隊列啟動class RMSPropOptimizer: RMSProp 優化器class Saver: 保存模型和變量類NewCheckpointReader(...)checkpoint 文件讀取batch(...): 生成tensorsbatchcreate_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 SummarySummary 類get_summary_description(...): 獲取計算節點信息histogram(...): 展示變量分布信息image(...): 展示圖片信息merge(...): 合並某個 Summary 信息merge_all(...): 合並所有的各處分散的 Summary 信息到默認的計算圖scalar(...): 展示某個標量的值text(...): 展示文本信息
這個模塊比較簡單,但是使用時有些地方還是要注意,這個以后專門用一篇文章來寫。
常用函數和方法
TensorFlow 還把那些經常使用的 Tensor 操作功能直接放在了 tf 下面,包括了:
Maths、Array、Matrix 相關的操作,也就是例如算術操作、張量(矩陣)操作、數據類型轉換、矩陣的變形、切片、合並、規約、分割、序列比較與索引提取等常用功能。
總體來說,了解了 TensorFlow 這幾個大的常用模塊功能后,再去使用起來才會感到邏輯清晰一點。
