北京大學Tensorflow2 0筆記

2021-10-07 23:16:50 字數 2400 閱讀 9000

目前很少用這個啟用函式,因為在深度神經網路中更新引數時需要從輸出層到輸入層逐層進行鏈式求導,而sigmoid函式倒數值為0-0.25之間,鏈式求導需要多層導數連續相乘,會出現多個0-0.25之間的連續相乘,結果趨於零,產生梯度消失,無法進行引數更新

使用中應避免負數特徵進入relu函式,否則會導致神經元死亡

過擬合的解決方法:l1正則化和l2正則化

用tensorflow api :tf.keras搭建網路八股

六步法:

1、import

import相關模組,如:import tensorflow as tf

2、train,test

要指定訓練集的輸入特徵x_train和訓練集的標籤y_train,還可以指定測試集的輸入特徵x_test和測試集的標籤y_test

3、在sequential()中搭建網路結構:model = tf.keras.model.sequential,逐層描述沒層網路,相當於走了一遍前向傳播

4、model.compile(),在compile()中配置訓練方法,告知訓練時選擇哪種優化器,選擇哪種損失函式,選擇哪種評測指標

5、model.fit ()在fit中執行訓練過程,告知訓練集和測試集的輸入特徵和標籤,告知每乙個batch是多少,告知要迭代多少次資料集

6、model.summary(),用summary列印出網路的結構和引數統計

注:以上六部為以後寫**的提綱,一定一定一定要記住,重要的事情說三遍

可以認為sequential()是乙個容器,封裝了乙個神經網路結構,在senquential中要描述從輸入層到輸出層每一層的網路結構,每一層的網路結構可以是拉直層flatten(),這一層不含計算,只是形狀轉換,把輸入特徵拉直變成一維陣列;

batch_size=每次餵入神經網路的樣本數

epochs=迭代多少次資料集

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

x_train——訓練集輸入特徵

y_train——訓練集標籤

batch_size——訓練時一次餵入神經網路多少組資料

epochs——資料集迭代迴圈多少次

validation_split=0.2——告知從訓練集中選擇20%的資料作為測試集

validation_freq=20——每迭代20次訓練集要在測試集中驗證一次準確率

loss=tf.keras.losses.sparsecategoricalcrossentropy(from_logits=false),

由於神經網路末端使用了softmax函式,使得輸出是概率分布而不是原始輸出,所以from_logits是false

metrics=[『sparse_categorical_accuracy』])

由於鳶尾花資料集給的標籤是0,1,2是數值,神經網路前向傳播的輸出是概率分布,所以選擇sparse_categorical_accuracy作為評測指標

用summary列印出網路結構和引數統計

用sequential可以搭建出上層輸出就是下層輸入的順序網路結構,無法寫出一些帶有跳連的非順序網路結構,這個時候可以選擇用類class搭建神經網路結構

可以認為__init__函式準備出搭建網路所需的各種積木

call函式呼叫__init__中搭建好的積木,實現前向傳播

蓋茨北京大學演講

大家早上好!微軟認為計算將是個人的,所有的人們創造出來工具,在所有的工具中個人電腦將是重要的一點,它能夠為人們提供溝通以及製造,做生意的全新的方式,這些充滿了好奇心的學生,更好地獲取各種各樣的資訊,讓他們找到自己問題的答案。在過去的30年中,確實是令人難以置信的。我們看到計算以後的方式發展,在30多...

參加「北京大學CIO論壇」

今天上午9 00左右,忽然想起來曾經接到過乙份通知 北京大學cio論壇。或者中國資訊化高峰論壇暨首屆北大cio班結業典禮。內心裡不是很喜歡湊這種熱鬧,畢竟我已經看過 經歷過太多這樣的東西,印象中覺得就不是太好。但是,看到這是中國的最高學府首次舉辦類似的活動,心裡覺得還是有必要去看看的。正想著,身子還...

子串計算 北京大學

牛客網題目鏈結 直接暴力,用map函式存每個子串出現的次數,子串的型別使用兩層迴圈遍歷。注意字串的邊界問題,這裡需要排序所以直接用map include include include include include include include include include include u...