tensorflow 完整一套流程的第三天

2022-09-09 04:09:12 字數 1102 閱讀 3866

從理論到實踐,才是完整的學習過程。

神經網路的提出,是從神經元開始的。從生物學意義上的神經元得到啟發,感知機的概念被提了出來。感知機的原理就是對輸入向量進行一定的計算,並通過啟用函式得到更加能表達資料意義的內容。再從向量開始擴充,拓展到矩陣,以及更高維的張量。於是,全連線層被用來同時處理更多的資料。全連線層的實現方式主要有兩種:張量形式和層形式。

張量形式主要是兩步,先將輸入資料乘上這一層的權重,加上偏置項,然後輸入進啟用函式得到結果。呼叫tf.matmul計算相稱運算,啟用函式的選擇放在後面。層形式相比較為簡單,通過tf.keras.layers.dense同時設定好層的輸出神經元個數以及啟用函式,在呼叫build方法或者經過計算後,會在內部建立權重矩陣偏置項。同時dense物件擁有一些屬性,可以檢視這一層的具體情況。kernel屬性檢視權重矩陣,bias屬性檢視偏置項,trainable_variables屬性包括所有需要優化的張量,non_trainable_variables屬性包括不需要優化的張量,variables包括所有張量。

漸漸的,僅僅乙個全連線層已經不能夠完成複雜的任務,於是神經網路開始出現,人們把多個網路層連起來,前面一層的輸出輸入下一層,來實現複雜的目標。通過tf.gradienttape上下文管理待優化張量,呼叫gradient方法計算梯度,再使用tf.keras.optimizers優化器優化張量。同樣的,對於網路,可以用兩種方式實現,還可以更進一步,將dense物件包含在tf.keras.sequential容器中,簡化呼叫過程。

網路層中使用的啟用函式,有一些常用的函式,包括sigmoid、tanh、relu、leakyrelu等。前兩種在一定範圍內有較好表現,但是如果資料趨向於正負無窮,導數趨向於0,會導致梯度瀰散現象,降低網路效能。而後兩種可以改善這樣的現象,他們相同的是對正數直接輸出,不同的是,relu對負數直接輸出為0,而leakyrelu將負數乘乙個小於1的正數,對負數進行了一定的保留。

同時,啟用函式也控制了輸出層輸出結果的分布情況,sigmoid控制輸出範圍為[0, 1],tanh控制輸出範圍為[-1, 1],而有時要控制輸出範圍[0, 1]同時總和為1,這時就需要softmax函式,softmax(x)=exp(x)/sum(exp(x))。

最後就是誤差計算,常用的有均方差、交叉熵、kl散度、hinge loss函式等。

一套mysql mysql 命令一套

mysql mysql h主機位址 u使用者名稱 p使用者密碼 首先開啟dos視窗,然後進入目錄mysqlin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.如果剛安裝好mysql,超級使用者roo...

分享一套 python 試題

賴勇浩 今天在 is better.com 看到一篇 python 面試題集合 同時附在了此文下方 裡面有一些很好的試題,如 python是如何進行型別轉換的?也有一些讓人 的試題,如 python如何實現單例模式?其他23種設計模式python如何實現?在引我思考的同時,也讓我產生把自己之前招聘所...

發布一套IOCP框架

目前,所提供的原始碼提供了socket和file的非同步操作,可以非常方便的擴充套件為支援其他的操作。編譯環境需求 vs2008 sp1以上 支援c tr1元件即可 大致的層次圖如下 類圖如下 這裡,給出的原始碼和簡單的示例 請以所提供的demo程式為準 ifndef service hpp def...