【Tensorflow入門教程一】縱觀全局:tensorflow各函數塊解析。

作爲深度學習的最熱門工具之一,Tensorflow可以爲我們的模型搭建以及數據運算帶來極大的便利。作爲一門工具,必不可少地是要對它有一個全局的瞭解。私以爲,如果對它的整體的模塊架構有一個瞭解的話,再結合自己的興趣與需要,能夠節約更多的時間去思考自己的網絡結構設計,完善更多細節。

登陸到tensorflow官網www.tensorflow.org,沒有梯子的同學可以使用如下網站:devdocs.io,這個網站目前支持大部分的API接口的離線閱讀,你只需要enable你需要的語言,然後install即可,絕對的查閱代碼神器。從官網可以查閱到tensorflow的相關API。

從上圖可以看到tensorflow中封裝了許多的函數,其中主要介紹我們比較常用的一些模塊:

tf ——tf模塊下的函數用於完成一些常用的運算操作,比如說tf.abs(計算絕對值),tf.add(逐元素的相加),tf.concat(tensor的拼接)等等。裏面的操作大部分的nu'mpy也能夠實現,只是這裏的操作相比於numpy都是針對tensor的。以及一些數據結構的定義,如tf.float32,tf.int64等等。該模塊下一共有480左右的函數,感興趣的可以看看。


tf.app——該模塊下的函數只有一個,即`tf.app.run(main=None,argv=None)`,運行帶argv參數的main函數。


tf.data——實現對數據集的操作,可以用來製作供tensorflow讀取的數據集,其數據類型爲tensor,並可以輸出相應的TFRecord文件。


tf.distributions——實現統計學中的各種分佈。該模塊下的各函數用於實現統計學的各個分佈,如伯努利、均勻分佈、高斯分佈等等。


tf.estimator——實現對模型的訓練和評估。該模塊下包含有tensorflow封裝的多種分類器。


tf.gfile——對文件的操作。該模塊下的函數可以實現文件I/O的操作以及拷貝、重命名等等。


tf.image——實現對圖像的操作。該模塊下的相關函數包含圖像處理的功能,類似於opencv,有着圖像亮度、飽和度、反相、裁剪、resize、圖像格式轉換(RGB TO HSV,YUV,YIQ,gray)旋轉、sobel邊緣檢測等一系列功能,相當於一個小型的opencv圖像處理包了。


tf.initializers——實現對權值等變量的初始化。該模塊下有許多個初始化的類,用於對網絡中的權值參數等進行初始化。


tf.keras——爲tensorflow調用keras工具的一個python API,是一個比較大的模塊,裏面包含了網絡的各種操作。


tf.layer——實現層與層之間的操作。該模塊下是網絡結構中的層與層之間的計算操作的實現,包含池化、卷積、反捲積、全連接、dropout、batch normalization等等功能。其中包含的功能與後面要介紹的tf.nn下的函數類似,不過貌似後者用得更多一點。


tf.losses——包含一些常用loss的使用。如sigmoid_cross_entropy,softmax_cross_entropy,hinge_loss,也可以通過add_loss來添加自己定義的loss函數。


tf.nn——完成層與層之間的運算操作。包含tf.layer中的大部分功能,如池化、卷積、BN、dropout、全連接,此外有多種激活函數的實現,如relu、leaky relu、 sigmoid等等。相比tf.layer,tf.nn下的函數貌似更常用一點。


tf.summary——用於記錄訓練過程中的參數。當我們訓練一個模型的時候,往往需要了解它的參數訓練過程,以及相應的loss走向,精度等等。而tf.summary這個模塊可以將申明瞭tensor變量的值進行記錄彙總。通過保存模型的方法,在訓練完成後可以通過TensorBoard查看模型的相應參數。是一個在做研究時比較常用的模塊。


tf.train——用於對網絡的訓練。該模塊下包含多個優化算法,如SGD,Adagrad等等,用於整個模型的訓練部分的優化過程。也是比較常用的一個模塊。


tf.contrib——這是tensorflow的擴展模塊,該模塊下有許多tensorflow官方或者是民間大牛在維護的相應函數API,是一個比較龐大的資源庫,裏面有非常使用的函數,比如tensorflow的簡化版slim,用slim寫網絡結構就非常方便。還有其他的一些,感興趣的可以自行查閱。


以上就是我們在使用tensorflow時比較常用的一些模塊了。其實看了這麼多,對於需要用哪些大家心裏也比較清楚了。不過tensorflow只是一個工具,關鍵還是在於算法的架構,理論纔是重中之重。希望大家在平時也不要忘了對文獻的閱讀。

最後貼一張通過深度學習生成的藝術圖: