Introduction
單元測試往往是針對一個模塊或是針對一個函數來進行測試
確認函數運行的結果是正確無誤的
引出單元測試
Golang testing測試框架,可以很好的解決問題
Go 自帶輕量級的測試框架testing和自帶go test命令來實現單元測試和性能測試
與其他語言測試框架類似,可以對相應函數撰寫測試用例
https://studygolang.com/static/pkgdoc/pkg/testing.htm
Tensorflow2-tensorflow-keras-Wide & Deep 房價預測演示(子類API)
Introduction
構建一個子類的API實現wide & deep模型
繼承tf.keras.models.Model這個class
繼承後除了重載__init__(self)函數之外,還需重載call(self, input)函數
__init__用於定義模型的層次
call函數用於完成模型的正向計算
於子類構建完成模型後
實例化子類調用模型
實例化子類
調用build函數
並指定其input_shape
使用tf.keras.models.Sequential類實例化模型
一樣需要調用build函數,並指定其input_shape
Tensorflow2-tensorflow-keras-Wide & Deep 房價預測演示(函數式API)
Introduction
將使用房價預測的回歸的問題進行演示
此數據集含有8個特徵,可以很輕鬆的將其劃分給wide模型及deep模型使用的特徵
特徵與特徵之間的價值有所差異
對於圖像分類來說,數據集的劃分並無太大的意義(像素之值)
特徵與特徵之間的價值雷同
因Wide & deep模型為兩部份有層級結構的模型所組成的,因此並非使用tf.keras.models.Sequential()的方式構建模型
Tensorflow2-tensorflow-keras-Wide & Deep 模型初識
Introduction
Google於2016年發布,可用於分類和回歸模型
其已被應用到Google Play中的應用推薦
將一組數據的訊息以稀特徵及密特徵兩種特徵表示,並基於兩種特徵構建模型
Tensorflow2-tensorflow-keras-深度神經網絡(DNN)_dropout
Dropout用於防止過擬合
左圖是正常的全連接神經網絡
右圖將某些節點強制設為0,則對於此節點連接的線將會失效(無輸出or輸出為0),生成新的子網絡稱之為dropout操作
將某些神經單元棄用
且每次訓練棄用掉的單元數量是隨機的
通常只讓某幾層進行dropout,而非每一層都添加
使用API:只要添加(add)dropout的layer就相當於對前一層Dense進行dropout
keras.layers.AlphaDropout(rate):相較於一般dropout更加強大
rate:丟掉單元的比例為何(為0-1之間的小數);一般都設為0.5
AlphaDropout的過程均值和方差不會改變;因此其歸一化的性質也不變
可與batch_normalization或是selu激活函數一起使用
不會使原本的分布發生大幅度的改變
keras.layers.Dropout(rate):如一開始介紹純淨的dropout
Tensorflow2-tensorflow-keras-深度神經網絡(DNN)_更改激活函數
激活函數
它們將非線性特性引入到網絡中。其主要目的是將A-NN模型中一個節點的輸入信號轉換成一個輸出信號。該輸出信號現在被用作堆疊中下一個層的輸入
輸入(X)和它們對應的權重(W)的乘積之和,並將激活函數f(x)應用於其獲取該層的輸出並將其作為輸入饋送到下一個層
https://kknews.cc/news/4mlnr82.html
Tensorflow2-tensorflow-keras-深度神經網絡(DNN)_批歸一化(batch normalization)
批標準化(批歸一化;batch normalize)
將前章用到的標準化方法(Z-score, min-max等)在輸入數據進入每一層前皆進行標準化處理
使神經網絡效果變好
緩解梯度消失的問題
計算量較大,速度變慢
keras.layers.BatchNormalization()
以下方法可以自己試試看
Tensorflow2-tensorflow-keras-回歸模型實踐
Introduction
以下將使用房價預測數據集實踐回歸模型示例
sklearn.datasets.fetch_california_housing
Tensorflow2-tensorflow-keras-回調函數
Introduction
回調函數的API類位於tf.keras.callbacks類中
通常在模型訓練的過程中,常常會額外作一些非模型訓練的事情
EarlyStopping:應用在當訓練模型的過程中,如果loss值不再下降,便可提前停止訓練
keras.callbacks.EarlyStopping(monitor, min_delta)
monitor:指定要關注的指標之值,一般情況都是關注驗證集上目標(損失)函數之值
min_delta:閾值
此次訓練相較於上次訓練的差距是否比閾值低;提前結束訓練
patience:當此次訓練相較於上次訓練比min_delta還小時,patience次數後就提前結束訓練
ModelCheckpint:訓練模型的過程中,記錄所有訓練參數的中間狀態,其會每隔一段時間將checkpoint保存下來
keras.callbacks.ModelCheckpoint(filepath)
其須指定filepath為一文件名
save_best_only 為True時則保存最好的模型參數,否則會保存最近一次訓練的模型
TensorBoard:在模型訓練過程中,實時查看一些參數改變狀況的dashboard
keras.callbacks.Tensorboard(logdir)
其須指定logdir位置為一資料夾
其他回調函數皆收錄於 https://www.tensorflow.org/api_docs/python/tf/keras/callbacks 中