# Python 深度學習 DNN ###### tags:`Python Tutorial` * 神經網路依照隱藏層的不同構造可分為三大類:深度神經網路(DNN)、卷積神 經網路(CNN)及遞迴神經網路(RNN)。 * 有神經網路就稱為深度學習 * 計算權重總和:W1*X1 + W2*X2 + ...... + b * 激勵函式:轉換計算後的權重總和值,做為神經元的輸出值。 作用為**捨棄極端值**及**避免線性資料**。常用的激勵函式有:ReLU、Sigmoid、tanh等。 * 分類問題要用softmax ,損失函數要用交叉商最好 * 最佳化函式:調整權重值及偏置值大小是由學習率決定。 常用的激勵函數有:SGD、Momentum、Adam等。 * 反向傳播:由於損失函式及最佳化函式的計算是在輸出層之後執行,所以要以 反向傳播將誤差值往回傳遞資訊,使權重可以利用這樣的資訊以最佳化函式 來更新權重,進一步降低誤差。 * Tips: * keras 架構上tensorflow 所以語法使用上較為簡單 * DNN ``` from keras.models import Sequential from keras.layers import Dense(全連接層) 模型變數 model = Sequential() 模型變數 model.add(Dense(units=數值(要放幾個神經元?), input_dim=784數值, activation=激 勵函式名稱relu)) 2層 模型變數 model.add(Dense(units=數值(要放幾個神經元?), activation=激 勵函式名稱)relu) 3層 模型變數 model.add(Dense(units=數值(輸出的類別), input_dim=784數值, activation=激 勵函式relu)) 輸出層 模型變數 model.add(Dense(units=數值(輸出的類別), input_dim=784數值, activation=激 勵函式名稱 分類通常用softmax)) model.summary() #查看權重數量 ``` Tips: 驗證資料(validtion ):在訓練的時候, 就去驗證資料的正確與否 ## DNN 訓練以及存取模型 * 訓練模型: ``` 模型變數model.compile(loss=categorical_crossentropy(交叉商)損失函式, optimizer='adam'最佳化函式, metrics=[acctracy]評估 標準) 模型變數model.fit(x=train_feature特徵值,y=train_label標籤,validation_split=(通常0.15~0.3之間)驗證資料比率, epochs= 10 訓練次數,shuffle=布林值, batch_size=200批次資料數量,verbose=2顯示模式) ``` * 儲存模型: 模型變數.save(檔名) * 讀取模型: from keras.models import load_model 模型變數 = load_model(模型檔名) * 評估模型效能: score = model.evaluate(x=test_feature,y=test_label) # CNN • 卷積神經網路在深度神經網路新增了兩種演算方法: • 卷積層:提取局部圖片特徵。 • 池化層:降低維度。 ``` • 載入模型相關模組: from keras.layers import Conv2D, MaxPooling2D, Flatten • 建立卷積層的語法: 模型變數.add(Conv2D(filters=數值(捲機核數量), kernel_size=5*5二維元組(基數*基數), padding='same'填充方式, strides=1 數值, input_shape=三維元組(80,80,3), activation='relu'激勵函式)) • 建立池化層的語法: 模型變數.add(MaxPooling2D(pool_size=(2,2 or 3,3)二維元組)) * 拋棄層 0.1~0.4之間 model.add(Dropout(0.2)) • 查看權重數量 : 模型變數.summary() ``` tips: * `input_shape=(80,80,3) # 80*80 的彩色照片, 黑白照片是2`