接上一節課中使用高級抽象的API tf.keras搭建模型,本節課則介紹了基礎的API來方便大家更加靈活的定義和使用模型。課程內容包括tensorflow基礎數據類型、自定義模型和損失函數、自定義求導、tf.function、圖結構等以及其在圖像分類、房價預測上的實現。
講tensorflow基本的API,以及怎么結合tf.keras使用。
tf基礎API引入
基礎API;
基礎API與keras的集成(自定義損失函數;自定義層次);
@tf.function(圖結構,將python的普通代碼轉化為tensorflow的圖結構);
自定義求導。
@tf.function:
將python函數編譯成圖;
易於將模型導出成為GraphDef+checkpoint或者SavedModel;
使得eager execution可以默認打開,因為如果沒有@tf.function的話,雖然我們可以用eager execution寫代碼,但是這樣的代碼沒辦法保存中間的訓練結果,相當於tensorflow的功能只有一半,沒有保存的圖結構只能夠訓練無法做預測;
1.0的代碼可以通過tf.function來繼續在2.0里使用(可以替代session,1.0所有的圖結構都要打開一個session來訓練,2.0中session完全被棄用掉了,取而代之的是tf.function。)。
API列表:
基礎數據類型(tf.constant,tf.string;tf.ragged.constant,tf.SparseTensor,tf.Variable);
自定義損失函數(tf.reduce_mean);
自定義層次(keras.layers.Lambda和繼承法);
tf.function(tf.fucntion,tf.autograph.to_code,get_concrete_function);
GraphDef(get_operations,get_operation_by_name;get_tensor_by_name,as_graph_def);
自動求導(tf.GradientType;Optimizier.apply_gradients)。
實戰tf.constant
實戰tf.strings與ragged_tensor
實戰sparse_tensor與tf.Variable
以上這些就是在2.0經常用到的數據類型的API,對於函數的API,在tensorflow中實在太多了,采取的方式是用到什么就講什么,如果想要查找某種函數操作是否被實現,可以去tensorflow官網上查找。
實戰自定義損失函數與DenseLayer回顧
如何使用基礎的API去自定義損失函數,以及它在keras里邊如何使用。
使子類與lambda分別實戰自定義層次
用兩種方式自定義層次。
tf.function函數轉換
如何把層次函數像調普通的python函數一樣去進行調用,這也是2.0里邊才有的功能,1.0中是不支持的(跟結構相關的那些代碼必須要打開一個session去進行使用)。一個庫函數能夠像python函數被調用,有什么稀奇的,庫函數不是正應該如此嗎,但是相反的操作也是可以進行的,即python函數能夠像庫函數一樣被使用是不是更好呢。在tensorflow的庫函數里邊做了很多的優化,比如說針對編譯器的等各種不同的優化,普通的python代碼是沒有進行優化的,如果用某種方法可以把普通的沒有優化的這種函數用某種方法給變成tensorflow里邊被優化后的函數是不是更好呢,這就是我們要講的tf.function以及auto-graph。
@tf.function函數轉換
函數簽名與圖結構
近似求導
tf.GradientTape基本使用方法
tf.GradientTape與tf.keras結合使用
章節總結