●前言
第一部分PyTorch基礎
第1章Numpy基礎2
1.1生成Numpy數組3
1.1.1從已有數據中創建數組3
1.1.2利用random模塊生成數組4
1.1.3創建特定形狀的多維數組5
1.1.4利用arange、linspace函數生成數組6
1.素7
1.3Numpy的算術運算9
1.3.素相乘9
1.3.2點積運算10
1.4數組變形11
1.4.1更改數組的形狀11
1.4.2合並數組14
1.5批量處理16
1.6通用函數17
1.7廣播機制19
1.8小結20
第2章PyTorch基礎21
2.1為何選擇PyTorch?21
2.2安裝配置22
2.2.1安裝CPU版PyTorch22
2.2.2安裝GPU版PyTorch24
2.3JupyterNotebook環境配置26
2.4Numpy與Tensor28
2.4.1Tensor概述28
2.4.2創建Tensor28
2.4.3修改Tensor形狀30
2.4.4索引操作31
2.4.5廣播機制32
2.4素操作32
2.4.7歸並操作33
2.4.8比較操作34
2.4.9矩陣操作35
2.4.10PyTorch與Numpy比較35
2.5Tensor與Autograd36
2.5.1自動求導要點36
2.5.2計算圖37
2.5.3標量反向傳播38
2.5.4非標量反向傳播39
2.6使用Numpy實現機器學習41
2.7使用Tensor及Antograd實現機器學習44
2.8使用TensorFlow架構46
2.9小結48
第3章PyTorch神經網絡工具箱49
3.1神經網絡核心組件49
3.2實現神經網絡實例50
3.2.1背景說明51
3.2.2準備數據52
3.2.3可視化源數據53
3.2.4構建模型53
3.2.5訓練模型54
3.3如何構建神經網絡?56
3.3.1構建網絡層56
3.3.2前向傳播57
3.3.3反向傳播57
3.3.4訓練模型58
3.4神經網絡工具箱nn58
3.4.1nn.Module58
3.4.2nn.functional58
3.5優化器59
3.6動態修改學習率參數60
3.7優化器比較60
3.8小結62
第4章PyTorch數據處理工具箱63
4.1數據處理工具箱概述63
4.2utils.data簡介64
4.3torchvision簡介66
4.3.1transforms67
4.3.2ImageFolder67
4.4可視化工具69
4.4.1tensorboardX簡介69
4.4.2用tensorboardX可視化神經網絡71
4.4.3用tensorboardX可視化損失值72
4.4.4用tensorboardX可視化特征圖73
4.5本章小結74
第二部分深度學習基礎
第5章機器學習基礎76
5.1機器學習的基本任務76
5.1.1監督學習77
5.1.2無監督學習77
5.1.3半監督學習78
5.1.4強化學習78
5.2機器學習一般流程78
5.2.1明確目標79
5.2.2收集數據79
5.2.3數據探索與預處理79
5.2.4選擇模型及損失函數80
5.2.5評估及優化模型81
5.3過擬合與欠擬合81
5.3.1權重正則化82
5.3.2Dropout正則化83
5.3.3批量正則化86
5.3.4權重初始化88
5.4選擇合適激活函數89
5.5選擇合適的損失函數90
5.6選擇合適優化器92
5.6.1傳統梯度優化的不足93
5.6.2動量算法94
5.6.3AdaGrad算法96
5.6.4RMSProp算法97
5.6.5Adam算法98
5.7GPU加速99
5.7.1單GPU加速100
5.7.2多GPU加速101
5.7.3使用GPU注意事項104
5.8本章小結104
第6章視覺處理基礎105
6.1卷積神經網絡簡介105
6.2卷積層107
6.2.1卷積核108
6.2.2步幅109
6.2.3填充111
6.2.4多通道上的卷積111
6.2.5激活函數113
6.2.6卷積函數113
6.2.7轉置卷積114
6.3池化層115
6.3.1局部池化116
6.3.2全局池化117
6.4現代經典網絡119
6.4.1LeNet-5模型119
6.4.2AlexNet模型120
6.4.3VGG模型121
6.4.4GoogleNet模型122
6.4.5ResNet模型123
6.4.6膠囊網絡簡介124
6.5PyTorch實現CIFAR-10多分類125
6.5.1數據集說明125
6.5.2加載數據125
6.5.3構建網絡127
6.5.4訓練模型128
6.5.5測試模型129
6.5.6采用全局平均池化130
6.5.7像Keras一樣顯示各層參數131
6.6模型集成提升性能133
6.6.1使用模型134
6.6.2集成方法134
6.6.3集成效果135
6.7使用現代經典模型提升性能136
6.8本章小結137
第7章自然語言處理基礎138
7.1循環神經網絡基本結構138
7.2前向傳播與隨時間反向傳播140
7.3循環神經網絡變種143
7.3.1LSTM144
7.3.2GRU145
7.3.3Bi-RNN146
7.4循環神經網絡的PyTorch實現146
7.4.1RNN實現147
7.4.2LSTM實現149
7.4.3GRU實現151
7.5文本數據處理152
7.6詞嵌入153
7.6.1Word2Vec原理154
7.6.2CBOW模型155
7.6.3Skip-Gram模型155
7.7PyTorch實現詞性判別156
7.7.1詞性判別主要步驟156
7.7.2數據預處理157
7.7.3構建網絡157
7.7.4訓練網絡158
7.7.5測試模型160
7.8用LSTM預測股票行情160
7.8.1導入數據160
7.8.2數據概覽161
7.8.3預處理數據162
7.8.4定義模型163
7.8.5訓練模型163
7.8.6測試模型164
7.9循環神經網絡應用場景165
7.10小結166
第8章生成式深度學習167
8.1用變分自編碼器生成圖像167
8.1.1自編碼器168
8.1.2變分自編碼器168
8.1.3用變分自編碼器生成圖像169
8.2GAN簡介173
8.2.1GAN架構173
8.2.2GAN的損失函數174
8.3用GAN生成圖像175
8.3.1判別器175
8.3.2生成器175
8.3.3訓練模型175
8.3.4可視化結果177
8.4VAE與GAN的優缺點178
8.5ConditionGAN179
8.5.1CGAN的架構179
8.5.2CGAN生成器180
8.5.3CGAN判別器180
8.5.4CGAN損失函數181
8.5.5CGAN可視化181
8.5.6查看指定標簽的數據182
8.5.7可視化損失值182
8.6DCGAN183
8.7提升GAN訓練效果的一些技巧184
8.8小結185
第三部分深度學習實踐
第9章人臉檢測與識別188
9.1人臉識別一般流程188
9.2人臉檢測189
9.2.1目標檢測189
9.2.2人臉定位191
9.2.3人臉對齊191
9.2.4MTCNN算法192
9.3特征提取193
9.4人臉識別198
9.4.1人臉識別主要原理198
9.4.2人臉識別發展198
9.5PyTorch實現人臉檢測與識別199
9.5.1驗證檢測代碼199
9.5.2檢測圖像200
9.5.3檢測後進行預處理200
9.5.4查看經檢測後的圖像201
9.5.5人臉識別202
9.6小結202
第10章遷移學習實例203
10.1遷移學習簡介203
10.2特征提取204
10.2.1PyTorch提供的預處理模塊205
10.2.2特征提取實例206
10.3數據增強209
10.3.1按比例縮放209
10.3.2裁剪210
10.3.3翻轉210
10.3.4改變顏色211
10.3.5組合多種增強方法211
10.4微調實例212
10.4.1數據預處理212
10.4.2加載預訓練模型213
10.4.3修改分類器213
10.4.4選擇損失函數及優化器213
10.4.5訓練及驗證模型214
10.5清除圖像中的霧霾214
10.6小結217
第11章神經網絡機器翻譯實例218
11.1Encoder-Decoder模型原理218
11.2注意力框架220
11.3PyTorch實現注意力Decoder224
11.3.1構建Encoder224
11.3.2構建簡單Decoder225
11.3.3構建注意力Decoder226
11.4用注意力機制實現中英文互譯227
11.4.1導入需要的模塊228
11.4.2數據預處理228
11.4.3構建模型231
11.4.4訓練模型234
11.4.5隨機采樣,對模型進行測試235
11.4.6可視化注意力236
11.5小結237
第12章實戰生成式模型238
12.1DeepDream模型238
12.1.1Deep Dream原理238
12.1.2DeepDream算法流程239
12.1.3用PyTorch實現DeepDream240
12.2風格遷移243
12.2.1內容損失244
12.2.2風格損失245
12.2.3用PyTorch實現神經網絡風格遷移247
12.3PyTorch實現圖像修復252
12.3.1網絡結構252
12.3.2損失函數252
12.3.3圖像修復實例253
12.4PyTorch實現DiscoGAN255
12.4.1DiscoGAN架構256
12.4.2損失函數258
12.4.3DiscoGAN實現258
12.4.4用PyTorch實現從邊框生成鞋子260
12.5小結262
第13章Caffe2模型遷移實例263
13.1Caffe2簡介263
13.2Caffe如何升級到Caffe2264
13.3PyTorch如何遷移到Caffe2265
13.4小結268
第14章AI新方向:對抗攻擊269
14.1對抗攻擊簡介269
14.1.1白盒攻擊與黑盒攻擊270
14.1.2無目標攻擊與有目標攻擊270
14.2常見對抗樣本生成方式271
14.2.1快速梯度符號法271
14.2.2快速梯度算法271
14.3PyTorch實現對抗攻擊272
14.3.1實現無目標攻擊272
14.3.2實現有目標攻擊274
14.4對抗攻擊和防御措施276
14.4.1對抗攻擊276
14.4.2常見防御方法分類276
14.5總結277
第15章強化學習278
15.1強化學習簡介278
15.2Q-Learning原理281
15.2.1Q-Learning主要流程281
15.2.2Q函數282
15.2.3貪婪策略283
15.3用PyTorch實現Q-Learning283
15.3.1定義Q-Learing主函數283
15.3.2執行Q-Learing284
15.4SARSA算法285
15.4.1SARSA算法主要步驟285
15.4.2用PyTorch實現SARSA算法286
15.5小結287
第16章深度強化學習288
16.1DQN算法原理288
16.1.1Q-Learning方法的局限性289
16.1.2用DL處理RL需要解決的問題289
16.1.3用DQN解決方法289
16.1.4定義損失函數290
16.1.5DQN的經驗回放機制290
16.1.6目標網絡290
16.1.7網絡模型291
16.1.8DQN算法291
16.2用PyTorch實現DQN算法292
16.3小結295
附錄APyTorch0.4版本變更296
附錄BAI在各行業的近期新應用301