北京大学Tensorflow2.0笔记
激活函數(shù)
目前很少用這個激活函數(shù),因為在深度神經(jīng)網(wǎng)絡中更新參數(shù)時需要從輸出層到輸入層逐層進行鏈式求導,而sigmoid函數(shù)倒數(shù)值為0-0.25之間,鏈式求導需要多層導數(shù)連續(xù)相乘,會出現(xiàn)多個0-0.25之間的連續(xù)相乘,結果趨于零,產(chǎn)生梯度消失,無法進行參數(shù)更新
使用中應避免負數(shù)特征進入RELU函數(shù),否則會導致神經(jīng)元死亡
過擬合的解決方法:L1正則化和L2正則化
用Tensorflow API :tf.keras搭建網(wǎng)絡八股
六步法:
1、import
import相關模塊,如:import tensorflow as tf
2、train,test
要指定訓練集的輸入特征x_train和訓練集的標簽y_train,還可以指定測試集的輸入特征x_test和測試集的標簽y_test
3、在Sequential()中搭建網(wǎng)絡結構:model = tf.keras.model.Sequential,逐層描述沒層網(wǎng)絡,相當于走了一遍前向傳播
4、model.compile(),在compile()中配置訓練方法,告知訓練時選擇哪種優(yōu)化器,選擇哪種損失函數(shù),選擇哪種評測指標
5、model.fit ()在fit中執(zhí)行訓練過程,告知訓練集和測試集的輸入特征和標簽,告知每一個batch是多少,告知要迭代多少次數(shù)據(jù)集
6、model.summary(),用summary打印出網(wǎng)絡的結構和參數(shù)統(tǒng)計
注:以上六部為以后寫代碼的提綱,一定一定一定要記住,重要的事情說三遍
可以認為Sequential()是一個容器,封裝了一個神經(jīng)網(wǎng)絡結構,在Senquential中要描述從輸入層到輸出層每一層的網(wǎng)絡結構,每一層的網(wǎng)絡結構可以是拉直層Flatten(),這一層不含計算,只是形狀轉換,把輸入特征拉直變成一維數(shù)組;
batch_size=每次喂入神經(jīng)網(wǎng)絡的樣本數(shù)
epochs=迭代多少次數(shù)據(jù)集
注一
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
x_train——訓練集輸入特征
y_train——訓練集標簽
batch_size——訓練時一次喂入神經(jīng)網(wǎng)絡多少組數(shù)據(jù)
epochs——數(shù)據(jù)集迭代循環(huán)多少次
validation_split=0.2——告知從訓練集中選擇20%的數(shù)據(jù)作為測試集
validation_freq=20——每迭代20次訓練集要在測試集中驗證一次準確率
注二
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
由于神經(jīng)網(wǎng)絡末端使用了Softmax函數(shù),使得輸出是概率分布而不是原始輸出,所以from_logits是False
注三
metrics=[‘sparse_categorical_accuracy’])
由于鳶尾花數(shù)據(jù)集給的標簽是0,1,2是數(shù)值,神經(jīng)網(wǎng)絡前向傳播的輸出是概率分布,所以選擇sparse_categorical_accuracy作為評測指標
注四
用summary打印出網(wǎng)絡結構和參數(shù)統(tǒng)計
用Sequential可以搭建出上層輸出就是下層輸入的順序網(wǎng)絡結構,無法寫出一些帶有跳連的非順序網(wǎng)絡結構,這個時候可以選擇用類class搭建神經(jīng)網(wǎng)絡結構
可以認為__init__函數(shù)準備出搭建網(wǎng)絡所需的各種積木
call函數(shù)調用__init__中搭建好的積木,實現(xiàn)前向傳播
第五章
總結
以上是生活随笔為你收集整理的北京大学Tensorflow2.0笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何找tensorflow-gpu版本对
- 下一篇: 在anaconda中运行jupyter