注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)人工智能深度學(xué)習(xí)入門2:自制框架

深度學(xué)習(xí)入門2:自制框架

深度學(xué)習(xí)入門2:自制框架

定 價:¥129.80

作 者: 齋藤康毅
出版社: 人民郵電出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787115607515 出版時間: 2023-03-01 包裝: 平裝
開本: 頁數(shù): 字數(shù):  

內(nèi)容簡介

  深度學(xué)習(xí)框架中蘊藏著驚人的技術(shù)和有趣的機制,本書旨在揭開這些技術(shù)和機制的神秘面紗,幫助讀者正確理解技術(shù),體會它們的有趣之處。為此,本書會帶領(lǐng)讀者從零開始創(chuàng)建一個深度學(xué)習(xí)框架——DeZero。DeZero 是本書原創(chuàng)的框架,它用最少的代碼實現(xiàn)了現(xiàn)代深度學(xué)習(xí)框架的功能。本書分60 個步驟來完成這個框架,在此過程中,讀者會加深對PyTorch、TensorFlow 和Chainer 等現(xiàn)代深度學(xué)習(xí)框架的理解,看清深度學(xué)習(xí)框架的本質(zhì)。 本書沿襲《深度學(xué)習(xí)入門:基于Python 的理論與實現(xiàn)》的風格,語言通俗,代碼簡潔,講解詳細。在自制框架的過程中,讀者還能進一步鞏固Python 編程和軟件開發(fā)相關(guān)的知識。 本書適合對深度學(xué)習(xí)框架感興趣的讀者閱讀。

作者簡介

  齋藤康毅(作者) 1984年生于日本長崎縣,東京工業(yè)大學(xué)畢業(yè),并完成東京大學(xué)研究生院課程。目前在某企業(yè)從事人工智能相關(guān)的研究和開發(fā)工作。著有《深度學(xué)習(xí)入門:基于Python的理論與實現(xiàn)》,同時也是Introducing Python、Python in Practice、The Elements of Computing Systems、Building Machine Learning Systems with Python的日文版譯者。 鄭明智(譯者) 智慧醫(yī)療工程師。主要研究方向為醫(yī)療與前沿ICT技術(shù)的結(jié)合及其應(yīng)用,密切關(guān)注人工智能、量子計算等領(lǐng)域。譯有《深度學(xué)習(xí)基礎(chǔ)與實踐》《詳解深度學(xué)習(xí)》《白話機器學(xué)習(xí)的數(shù)學(xué)》等書。

圖書目錄

前言 xvii

第 1階段 自動微分 1

步驟1 作為“箱子”的變量 3

1.1 什么是變量 3

1.2 實現(xiàn)Variable 類 4

1.3 (補充)NumPy的多維數(shù)組 6

步驟2 創(chuàng)建變量的函數(shù) 8

2.1 什么是函數(shù) 8

2.2 Function類的實現(xiàn) 9

2.3 使用Function 類 10

步驟3 函數(shù)的連續(xù)調(diào)用 13

3.1 Exp函數(shù)的實現(xiàn) 13

3.2 函數(shù)的連續(xù)調(diào)用 14

步驟4 數(shù)值微分 16

4.1 什么是導(dǎo)數(shù) 16

4.2 數(shù)值微分的實現(xiàn) 17

4.3 復(fù)合函數(shù)的導(dǎo)數(shù) 20

4.4 數(shù)值微分存在的問題 21

步驟5 反向傳播的理論知識 22

5.1 鏈式法則 22

5.2 反向傳播的推導(dǎo) 23

5.3 用計算圖表示 25

步驟6 手動進行反向傳播 27

6.1 Variable 類的功能擴展 27

6.2 Function類的功能擴展 28

6.3 Square類和Exp類的功能擴展 28

6.4 反向傳播的實現(xiàn) 29

步驟7 反向傳播的自動化 32

7.1 為反向傳播的自動化創(chuàng)造條件 33

7.2 嘗試反向傳播 36

7.3 增加backward方法 38

步驟8 從遞歸到循環(huán) 40

8.1 現(xiàn)在的Variable 類 40

8.2 使用循環(huán)實現(xiàn) 41

8.3 代碼驗證 42

步驟9 讓函數(shù)更易用 43

9.1 作為Python函數(shù)使用 43

9.2 簡化backward方法 45

9.3 只支持ndarray 46

步驟10 測試 50

10.1 Python的單元測試 50

10.2 square函數(shù)反向傳播的測試 52

10.3 通過梯度檢驗來自動測試 53

10.4 測試小結(jié) 54

第 2階段 用自然的代碼表達 59

步驟11 可變長參數(shù)(正向傳播篇) 61

11.1 修改Function 類 62

11.2 Add類的實現(xiàn) 64

步驟12 可變長參數(shù)(改進篇) 65

12.1 第 1 項改進:使函數(shù)更容易使用 65

12.2 第 2 項改進:使函數(shù)更容易實現(xiàn) 67

12.3 add函數(shù)的實現(xiàn) 69

步驟13 可變長參數(shù)(反向傳播篇) 70

13.1 支持可變長參數(shù)的Add類的反向傳播 70

13.2 修改Variable 類 71

13.3 Square類的實現(xiàn) 73

步驟14 重復(fù)使用同一個變量 75

14.1 問題的原因 76

14.2 解決方案 77

14.3 重置導(dǎo)數(shù) 79

步驟15 復(fù)雜的計算圖(理論篇) 81

15.1 反向傳播的正確順序 82

15.2 當前的DeZero 84

15.3 函數(shù)的優(yōu)先級 87

步驟16 復(fù)雜的計算圖(實現(xiàn)篇) 88

16.1 增加“輩分”變量 88

16.2 按照“輩分”順序取出元素 90

16.3 Variable 類的backward 92

16.4 代碼驗證 93

步驟17 內(nèi)存管理和循環(huán)引用 97

17.1 內(nèi)存管理 97

17.2 引用計數(shù)方式的內(nèi)存管理 98

17.3 循環(huán)引用 100

17.4 weakref模塊 102

17.5 代碼驗證 104

步驟18 減少內(nèi)存使用量的模式 106

18.1 不保留不必要的導(dǎo)數(shù) 106

18.2 回顧Function 類 109

18.3 使用Config類進行切換 110

18.4 模式的切換 111

18.5 使用with 語句切換 112

步驟19 讓變量更易用 116

19.1 命名變量 116

19.2 實例變量ndarray 117

19.3 len函數(shù)和print 函數(shù) 119

步驟20 運算符重載(1) 122

20.1 Mul類的實現(xiàn) 122

20.2 運算符重載 125

步驟21 運算符重載(2) 128

21.1 與ndarray 一起使用 128

21.2 與float 和int 一起使用 130

21.3 問題1:左項為float 或int 的情況 131

21.4 問題2:左項為ndarray 實例的情況 133

步驟22 運算符重載(3) 134

22.1 負數(shù) 135

22.2 減法 136

22.3 除法 138

22.4 冪運算 139

步驟23 打包 141

23.1 文件結(jié)構(gòu) 142

23.2 將代碼移到核心類 142

23.3 運算符重載 144

23.4 實際的_ _init_ _.py 文件 146

23.5 導(dǎo)入dezero 147

步驟24 復(fù)雜函數(shù)的求導(dǎo) 149

24.1 Sphere函數(shù) 150

24.2 matyas函數(shù) 151

24.3 Goldstein Price 函數(shù) 152

第3階段 實現(xiàn)高階導(dǎo)數(shù) 161

步驟25 計算圖的可視化(1) 163

25.1 安裝Graphviz 163

25.2 使用DOT語言描述圖形 165

25.3 指定節(jié)點屬性 165

25.4 連接節(jié)點 167

步驟26 計算圖的可視化(2) 169

26.1 可視化代碼的使用示例 169

26.2 從計算圖轉(zhuǎn)換為DOT語言 171

26.3 從DOT語言轉(zhuǎn)換為圖像 174

26.4 代碼驗證 176

步驟27 泰勒展開的導(dǎo)數(shù) 178

27.1 sin函數(shù)的實現(xiàn) 178

27.2 泰勒展開的理論知識 179

27.3 泰勒展開的實現(xiàn) 180

27.4 計算圖的可視化 182

步驟28 函數(shù)優(yōu)化 184

28.1 Rosenbrock函數(shù) 184

28.2 求導(dǎo) 185

28.3 梯度下降法的實現(xiàn) 186

步驟29 使用牛頓法進行優(yōu)化(手動計算) 190

29.1 使用牛頓法進行優(yōu)化的理論知識 191

29.2 使用牛頓法實現(xiàn)優(yōu)化 195

步驟30 高階導(dǎo)數(shù)(準備篇) 197

30.1 確認工作①:Variable 實例變量 197

30.2 確認工作②:Function 類 199

30.3 確認工作③:Variable 類的反向傳播 201

步驟31 高階導(dǎo)數(shù)(理論篇) 204

31.1 在反向傳播時進行的計算 204

31.2 創(chuàng)建反向傳播的計算圖的方法 206

步驟32 高階導(dǎo)數(shù)(實現(xiàn)篇) 209

32.1 新的DeZero 209

32.2 函數(shù)類的反向傳播 210

32.3 實現(xiàn)更有效的反向傳播(增加模式控制代碼) 211

32.4 修改_ _init_ _.py 213

步驟33 使用牛頓法進行優(yōu)化(自動計算) 215

33.1 求二階導(dǎo)數(shù) 215

33.2 使用牛頓法進行優(yōu)化 217

步驟34 sin函數(shù)的高階導(dǎo)數(shù) 219

34.1 sin函數(shù)的實現(xiàn) 219

34.2 cos函數(shù)的實現(xiàn) 220

34.3 sin函數(shù)的高階導(dǎo)數(shù) 221

步驟35 高階導(dǎo)數(shù)的計算圖 225

35.1 tanh函數(shù)的導(dǎo)數(shù) 226

35.2 tanh函數(shù)的實現(xiàn) 226

35.3 高階導(dǎo)數(shù)的計算圖可視化 227

步驟36 DeZero的其他用途 234

36.1 double backprop 的用途 234

36.2 深度學(xué)習(xí)研究中的應(yīng)用示例 236

第4階段 創(chuàng)建神經(jīng)網(wǎng)絡(luò) 243

步驟37 處理張量 245

37.1 對各元素進行計算 245

37.2 使用張量時的反向傳播 247

37.3 使用張量時的反向傳播(補充內(nèi)容) 249

步驟38 改變形狀的函數(shù) 254

38.1 reshape函數(shù)的實現(xiàn) 254

38.2 從Variable 對象調(diào)用reshape 258

38.3 矩陣的轉(zhuǎn)置 259

38.4 實際的transpose 函數(shù)(補充內(nèi)容) 262

步驟39 求和的函數(shù) 264

39.1 sum函數(shù)的反向傳播 264

39.2 sum函數(shù)的實現(xiàn) 266

39.3 axis 和keepdims 268

步驟40 進行廣播的函數(shù) 272

40.1 broadcast_to 函數(shù)和sum_to 函數(shù) 272

40.2 DeZero的broadcast_to 函數(shù)和sum_to 函數(shù) 275

40.3 支持廣播 277

步驟41 矩陣的乘積 280

41.1 向量的內(nèi)積和矩陣的乘積 280

41.2 檢查矩陣的形狀 282

41.3 矩陣乘積的反向傳播 282

步驟42 線性回歸 288

42.1 玩具數(shù)據(jù)集 288

42.2 線性回歸的理論知識 289

42.3 線性回歸的實現(xiàn) 291

42.4 DeZero的mean_squared_error函數(shù)(補充內(nèi)容) 295

步驟43 神經(jīng)網(wǎng)絡(luò) 298

43.1 DeZero中的linear 函數(shù) 298

43.2 非線性數(shù)據(jù)集 301

43.3 激活函數(shù)和神經(jīng)網(wǎng)絡(luò) 302

43.4 神經(jīng)網(wǎng)絡(luò)的實現(xiàn) 303

步驟44 匯總參數(shù)的層 307

44.1 Parameter類的實現(xiàn) 307

44.2 Layer類的實現(xiàn) 309

44.3 Linear類的實現(xiàn) 312

44.4 使用Layer實現(xiàn)神經(jīng)網(wǎng)絡(luò) 314

步驟45 匯總層的層 316

45.1 擴展Layer類 316

45.2 Model類 319

45.3 使用Model來解決問題 321

45.4 MLP類 323

步驟46 通過Optimizer更新參數(shù) 325

46.1 Optimizer類 325

46.2 SGD類的實現(xiàn) 326

46.3 使用SGD類來解決問題 327

46.4 SGD以外的優(yōu)化方法 328

步驟47 softmax函數(shù)和交叉熵誤差 331

47.1 用于切片操作的函數(shù) 331

47.2 softmax函數(shù) 334

47.3 交叉熵誤差 337

步驟48 多分類 340

48.1 螺旋數(shù)據(jù)集 340

48.2 用于訓(xùn)練的代碼 341

步驟49 Dataset類和預(yù)處理 346

49.1 Dataset類的實現(xiàn) 346

49.2 大型數(shù)據(jù)集的情況 348

49.3 數(shù)據(jù)的連接 349

49.4 用于訓(xùn)練的代碼 350

49.5 數(shù)據(jù)集的預(yù)處理 351

步驟50 用于取出小批量數(shù)據(jù)的DataLoader 354

50.1 什么是迭代器 354

50.2 使用DataLoader 358

50.3 accuracy函數(shù)的實現(xiàn) 359

50.4 螺旋數(shù)據(jù)集的訓(xùn)練代碼 360

步驟51 MINST的訓(xùn)練 363

51.1 MNIST數(shù)據(jù)集 364

51.2 訓(xùn)練MNIST 366

51.3 改進模型 368

第5階段 DeZero高級挑戰(zhàn) 377

步驟52 支持GPU 379

52.1 CuPy的安裝和使用方法 379

52.2 cuda模塊 382

52.3 向Variable / Layer / DataLoader 類添加代碼 383

52.4 函數(shù)的相應(yīng)修改 386

52.5 在GPU上訓(xùn)練MNIST 388

步驟53 模型的保存和加載 391

53.1 NumPy的save 函數(shù)和load 函數(shù) 391

53.2 Layer類參數(shù)的扁平化 394

53.3 Layer類的save 函數(shù)和load 函數(shù) 395

步驟54 Dropout和測試模式 398

54.1 什么是Dropout 398

54.2 Inverted Dropout 401

54.3 增加測試模式 401

54.4 Dropout的實現(xiàn) 402

步驟55 CNN的機制(1) 404

55.1 CNN的網(wǎng)絡(luò)結(jié)構(gòu) 404

55.2 卷積運算 405

55.3 填充 407

55.4 步幅 408

55.5 輸出大小的計算方法 409

步驟56 CNN的機制(2) 411

56.1 三階張量 411

56.2 結(jié)合方塊進行思考 412

56.3 小批量處理 414

56.4 池化層 415

步驟57 conv2d函數(shù)和pooling函數(shù) 418

57.1 使用im2col 展開 418

57.2 conv2d函數(shù)的實現(xiàn) 420

57.3 Conv2d層的實現(xiàn) 425

57.4 pooling 函數(shù)的實現(xiàn) 426

步驟58 具有代表性的CNN(VGG16) 429

58.1 VGG16的實現(xiàn) 429

58.2 已訓(xùn)練的權(quán)重數(shù)據(jù) 431

58.3 使用已訓(xùn)練的VGG16 435

步驟59 使用RNN處理時間序列數(shù)據(jù) 438

59.1 RNN層的實現(xiàn) 438

59.2 RNN模型的實現(xiàn) 442

59.3 切斷連接的方法 445

59.4 正弦波的預(yù)測 446

步驟60 LSTM與數(shù)據(jù)加載器 451

60.1 用于時間序列數(shù)據(jù)的數(shù)據(jù)加載器 451

60.2 LSTM層的實現(xiàn) 453

附錄A in place 運算(步驟14的補充內(nèi)容) 463

A.1 問題確認 463

A.2 關(guān)于復(fù)制和覆蓋 464

A.3 DeZero的反向傳播 465

附錄B 實現(xiàn)get_item函數(shù)(步驟47的補充內(nèi)容) 466

附錄C 在Google Colaboratory上運行 469

后 記 473

參考文獻 477

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號