第 1章 數(shù)學準備 001
1.1 偏微分 001
1.1.1 導函數(shù)和偏導函數(shù) 001
1.1.2 微分系數(shù)與偏微分系數(shù) 003
1.1.3 偏微分的基本公式 006
1.1.4 復合函數(shù)的偏微分 007
1.1.5 拓展全微分 009
1.2 線性代數(shù) 011
1.2.1 向量 011
1.2.1.1 向量的基礎知識 011
1.2.1.2 向量的和與標量倍數(shù) 011
1.2.1.3 向量的內積 012
1.2.2 矩陣 013
1.2.2.1 矩陣的基礎知識 013
1.2.2.2 矩陣的和與標量倍數(shù) 014
1.2.2.3 矩陣的乘積 014
1.2.2.4 正則矩陣與逆矩陣 016
1.2.2.5 轉置矩陣 017
1.3 小結 018
第 2章 Python準備 019
2.1 Python 2和Python 3 020
2.2 Anaconda發(fā)行版 021
2.3 Python的基礎知識 025
2.3.1 Python程序的執(zhí)行 025
2.3.2 數(shù)據類型 026
2.3.2.1 類型是什么 026
2.3.2.2 字符串類型 027
2.3.2.3 數(shù)值類型 028
2.3.2.4 布爾類型 030
2.3.3 變量 031
2.3.3.1 變量是什么 031
2.3.3.2 變量與類型 032
2.3.4 數(shù)據結構 033
2.3.4.1 列表 033
2.3.4.2 字典 034
2.3.5 運算 035
2.3.5.1 運算符與操作數(shù) 035
2.3.5.2 算術運算的運算符 036
2.3.5.3 賦值運算符 036
2.3.6 基本結構 038
2.3.6.1 if語句 038
2.3.6.2 while語句 039
2.3.6.3 for語句 041
2.3.7 函數(shù) 043
2.3.8 類 045
2.3.9 庫 048
2.4 NumPy 049
2.4.1 NumPy數(shù)組 049
2.4.2 使用NumPy進行向量和矩陣的計算 051
2.4.3 數(shù)組和多維數(shù)組的生成 053
2.4.4 切片 054
2.4.5 廣播 056
2.5 面向深度學習的庫 058
2.5.1 TensorFlow 058
2.5.2 Keras 059
2.5.3 參考Theano 060
2.6 小結 063
第3章 神經網絡 065
3.1 什么是神經網絡 065
3.1.1 腦和神經元 065
3.1.2 深度學習和神經網絡 066
3.2 作為電路的神經網絡 067
3.2.1 簡單的模型化 067
3.2.2 邏輯電路 069
3.2.2.1 邏輯門 069
3.2.2.2 與門 069
3.2.2.3 或門 072
3.2.2.4 非門 074
3.3 簡單感知機 075
3.3.1 模型化 075
3.3.2 實現(xiàn) 077
3.4 邏輯回歸 081
3.4.1 階躍函數(shù)與sigmoid函數(shù) 081
3.4.2 模型化 082
3.4.2.1 似然函數(shù)與交叉熵誤差函數(shù) 082
3.4.2.2 梯度下降法 084
3.4.2.3 隨機梯度下降法與小批量梯度下降法 085
3.4.3 實現(xiàn) 086
3.4.3.1 使用TensorFlow的實現(xiàn) 086
3.4.3.2 使用Keras的實現(xiàn) 092
3.4.4 拓展sigmoid函數(shù)與概率密度函數(shù)、累積分布函數(shù) 096
3.4.5 拓展梯度下降法和局部最優(yōu)解 099
3.5 多分類邏輯回歸 101
3.5.1 softmax函數(shù) 101
3.5.2 模型化 102
3.5.3 實現(xiàn) 106
3.5.3.1 使用TensorFlow的實現(xiàn) 106
3.5.3.2 使用Keras的實現(xiàn) 110
3.6 多層感知機 111
3.6.1 非線性分類 111
3.6.1.1 異或門 111
3.6.1.2 邏輯門的組合 113
3.6.2 模型化 115
3.6.3 實現(xiàn) 119
3.6.3.1 使用TensorFlow的實現(xiàn) 119
3.6.3.2 使用Keras的實現(xiàn) 122
3.7 模型的評估 123
3.7.1 從分類到預測 123
3.7.2 預測的評估 124
3.7.3 簡單的實驗 126
3.8 小結 131
第4章 深度神經網絡 133
4.1 進入深度學習之前的準備 133
4.2 訓練過程中的問題 138
4.2.1 梯度消失問題 138
4.2.2 過擬合問題 141
4.3 訓練的高效化 142
4.3.1 激活函數(shù) 143
4.3.1.1 雙曲正切函數(shù) 143
4.3.1.2 ReLU 145
4.3.1.3 Leaky ReLU 147
4.3.1.4 Parametric ReLU 149
4.3.2 Dropout 152
4.4 代碼的設計 157
4.4.1 基本設計 157
4.4.1.1 使用TensorFlow的實現(xiàn) 157
4.4.1.2 使用Keras的實現(xiàn) 160
4.4.1.3 拓展對TensorFlow模型進行類封裝 161
4.4.2 訓練的可視化 166
4.4.2.1 使用TensorFlow的實現(xiàn) 167
4.4.2.2 使用Keras的實現(xiàn) 172
4.5 高級技術 176
4.5.1 數(shù)據的正則化與權重的初始化 176
4.5.2 學習率的設置 179
4.5.2.1 動量 179
4.5.2.2 Nesterov動量 180
4.5.2.3 Adagrad 181
4.5.2.4 Adadelta 182
4.5.2.5 RMSprop 184
4.5.2.6 Adam 185
4.5.3 早停法 187
4.5.4 Batch Normalization 190
4.6 小結 195
第5章 循環(huán)神經網絡 197
5.1 基本概念 197
5.1.1 時間序列數(shù)據 197
5.1.2 過去的隱藏層 199
5.1.3 基于時間的反向傳播算法 202
5.1.4 實現(xiàn) 204
5.1.4.1 準備時間序列數(shù)據 205
5.1.4.2 使用TensorFlow的實現(xiàn) 207
5.1.4.3 使用Keras的實現(xiàn) 214
5.2 LSTM 215
5.2.1 LSTM 塊 215
5.2.2 CEC、輸入門和輸出門 217
5.2.2.1 穩(wěn)態(tài)誤差 217
5.2.2.2 輸入權重沖突和輸出權重沖突 219
5.2.3 遺忘門 220
5.2.4 窺視孔連接 222
5.2.5 模型化 223
5.2.6 實現(xiàn) 227
5.2.7 長期依賴信息的訓練評估——Adding Problem 229
5.3 GRU 232
5.3.1 模型化 232
5.3.2 實現(xiàn) 233
5.4 小結 235
第6章 循環(huán)神經網絡的應用 237
6.1 雙向循環(huán)神經網絡 237
6.1.1 未來的隱藏層 237
6.1.2 前向、后向傳播 239
6.1.3 MNIST的預測 241
6.1.3.1 轉換為時間序列數(shù)據 241
6.1.3.2 使用TensorFlow的實現(xiàn) 242
6.1.3.3 使用Keras的實現(xiàn) 245
6.2 循環(huán)神經網絡編碼器- 解碼器 246
6.2.1 序列到序列模型 246
6.2.2 簡單的問答系統(tǒng) 247
6.2.2.1 設置問題——加法的訓練 247
6.2.2.2 數(shù)據的準備 248
6.2.2.3 使用TensorFlow的實現(xiàn) 251
6.2.2.4 使用Keras的實現(xiàn) 260
6.3 注意力模型 261
6.3.1 時間的權重 261
6.3.2 LSTM中的注意力機制 263
6.4 記憶網絡 265
6.4.1 記憶外部化 265
6.4.2 應用于問答系統(tǒng) 266
6.4.2.1 bAbi任務 266
6.4.2.2 模型化 267
6.4.3 實現(xiàn) 269
6.4.3.1 數(shù)據的準備 269
6.4.3.2 使用TensorFlow的實現(xiàn) 272
6.5 小結 276
附錄 279
A.1 模型的保存和讀取 279
A.1.1 使用TensorFlow時的處理 279
A.1.2 使用Keras時的處理 284
A.2 TensorBoard 285
A.3 tf.contrib.learn 292