Tensorflow03 可訓練變數與自動求導機制

2022-06-19 21:15:16 字數 2112 閱讀 6143

使用如下命令進行 variable 物件的建立。

tf.variable(initial_value, dtype)
其中 initial_value 是傳入的數值型資料,可以傳入數字,python列表,ndarray物件 或者 tensor物件。dtype 為型別,預設是float32。

trainable 屬性:表示是否可以被訓練。

使用函式 assign() assign_add() assign_sub()函式,分別對 variable 物件重新賦值,加 減 等操作。注:是返回乙個操作後的物件,原變數不變。

tensorflow 提供了乙個專門用於求導的類,gradienttape,可以形象的理解為記錄資料梯度的磁帶,通過它,可以實現對變數的自動求導和監視 。

with tf.gradienttape() as tape:

函式表示式

grad = tape.gradient(函式, 自變數)

gradienttape 類實現了上下文管理器,它能夠監視 with語句塊所有的變數和計算過程,並把他們自動記錄在梯度帶中。

在上述**中,tf.gradienttape() 為建構函式,首先使用它來建立梯度帶物件 tape,同時tape 也是上下文管理器物件。然後把函式表示式寫在 with 語句塊中,監視要求導的變數。最後使用tape物件的gradient函式求得導數。gradient函式的第乙個引數是被求導的函式,第二次引數是被求導的自變數。

例如,求 y = x2| x=3,即 x = 3 的導數的值,具體步驟如下:

gradienttape 有兩個引數,gradienttape(persistent, watch_accessed_variables),這兩個引數都是 布林型別。

第乙個引數預設為 false,表示這個tape預設只能使用一次,求導之後就被銷毀。

如下,要求兩個函式的導數的值,需要指定 persistent為true,並且在使用完後,需要手動銷毀 tape,del tape

第二個引數表示自動監視所有的可訓練變數,也就是 variable 物件,預設為 true。如果設定為 false,就無法自動監視,如下圖。

在這種情況下,可以手動新增對變數的監視,使用的是 watch() 函式。

gradienttape 類預設自動監視所有的可訓練變數,使用watch函式還可以監視非可訓練物件,比如,可以講上圖的 x 由 variable物件換為 tensor物件,仍然可以得到正確結果。

函式 tape.gradient() 的第二個引數自變數,可以是乙個,可以是多個。如果對多個自變數求偏導數時,只要把所有的自變數都放到乙個列表裡就可以了。如下圖。

也可將畫線一行**寫成如下格式:

df_dx =tape.gradient(f,x)

df_dy = tape.gradient(f,y)

但最後需要使用 del tape 進行資源釋放。

TensorFlow訓練Logistic回歸

如下圖,可以清晰看到線性回歸和邏輯回歸的關係,乙個線性方程被邏輯方程歸一化後就成了邏輯回歸。對於二分類,輸出假如線性回歸模型為,則要將z轉成y,即y g z 於是最直接的方式是用單位階躍函式來表示,即 如圖,但階躍函式不連續,於是用sigmoid函式替代之,為 如圖,則有,即logistics函式,...

Tensorflow訓練迴圈

def fit loop model,inputs,targets,sample weights none,class weight none,val inputs none,val targets none,val sample weights none,batch size none,epoch...

tensorflow 資料訓練

一 資料訓練遇到問題 excle資料,如何進行訓練?excle資料,如何resize 呢?目前思路 tfrecords 採用 numpy的方法進行處理 學習方法 從檔案中讀取資料 標準化格式tfrecords記錄 二 資料預處理 numpy 不能有中文,要採用decode等方法 不能夠有百分號?目前...