買這商品的人也買了...
-
程式設計師的自我修養-連結、載入、程式庫$580$458 -
$202深度學習:方法及應用 -
程序員的數學3 : 線性代數$474$450 -
優化 C++|提高程式效能的有效技術 (Optimized C++: Proven Techniques for Heightened Performance)$680$537 -
$294自然語言處理與深度學習:通過 C語言模擬 -
$147程序員的數學 -
無瑕的程式碼-整潔的軟體設計與架構篇 (Clean Architecture: A Craftsman's Guide to Software Structure and Design)$580$452 -
$594手把手教你設計 CPU-RISC-V 處理器篇 -
$230枕邊算法書 -
$354機器學習與深度學習:通過 C語言模擬 -
$403程序員的數學 : 線性代數和概率統計 -
自己動手實現 Lua:虛擬機、編譯器和標準庫$534$507 -
$301機器人感知:因子圖在 SLAM 中的應用 -
$422分佈式機器學習:算法、理論與實踐 -
我 Rust 我驕傲:生來高人一等的快速優雅語言$880$695 -
OpenCV 4 專案實務, 2/e (Learn OpenCV 4 by Building Projects: Build real-world computer vision and image processing applications with OpenCV and C++, 2/e)$450$356 -
圖形演算法|Apache Spark 與 Neo4j 實務範例 (Graph Algorithms)$580$458 -
C++ Templates 全覽, 2/e (C++ Templates: The Complete Guide, 2/e)$1,200$948 -
$301強化學習與深度學習:通過 C語言模擬 -
$648Visual C++ 2017 網絡編程實戰 -
$1,971C++ High Performance : Master the art of optimizing the functioning of your C++ code, 2/e (Paperback) -
$654多人在線遊戲架構實戰:基於 C++ 的分佈式遊戲編程 -
資料科學的建模基礎 : 別急著 coding!你知道模型的陷阱嗎?$599$539 -
C++ 服務器開發精髓$1,008$958 -
資料科學的統計實務 : 探索資料本質、扎實解讀數據,才是機器學習成功建模的第一步$599$539
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
75折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$375 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
《C++模板元編程實戰:一個深度學習框架的初步實現》以一個深度學習框架的初步實現為例,討論如何在一個相對較大的項目中深入應用元編程,為系統性能優化提供更多的可能。
《C++模板元編程實戰:一個深度學習框架的初步實現》分為8章,前兩章討論了一些元編程與編譯期計算的基本技術,後面6章則討論了元編程在深度學習框架中的實際應用,涉及富類型與標簽體系、表達式模板、復雜元函數的編寫等多個主題,詳盡地展示瞭如何將面向對象與元編程相結合以構造復雜系統。
《C++模板元編程實戰:一個深度學習框架的初步實現》適合具有一定C++基礎的讀者閱讀。對主流深度學習框架的內核有一定瞭解的讀者,也可以參考本書,對比使用元編程與編譯期計算所實現的深度學習框架與主流的(主要基於面向對象所構造的)深度學習框架之間的差異。
作者簡介
李偉,2011年畢業於清華大學,曾經在百度自然語言處理部擔任深度學習機器翻譯系統線上預測部分的開發與維護,目前供職於微軟亞洲工程院。主要研究方向為C++,擁有10餘年相關開發經驗,對C++範本元程式設計與編譯期計算有著濃厚的興趣。喜歡嘗試新的技術,業餘愛好是程式設計與閱讀。
目錄大綱
第 一部分 元程式設計基礎技術
第 1章 基本技巧 3
1.1 元函數與type_traits 3
1.1.1 元函數介紹 3
1.1.2 類型元函數 4
1.1.3 各式各樣的元函數 6
1.1.4 type_traits 7
1.1.5 元函數與宏 7
1.1.6 本書中元函數的命名方式 8
1.2 範本型範本參數與容器範本 8
1.2.1 範本作為元函數的輸入 9
1.2.2 範本作為元函數的輸出 9
1.2.3 容器範本 10
1.3 順序、分支與循環代碼的編寫 12
1.3.1 循序執行的代碼 12
1.3.2 分支執行的代碼 13
1.3.3 循環執行的代碼 19
1.3.4 小心:產生實體爆炸與編譯崩潰 21
1.3.5 分支選擇與短路邏輯 23
1.4 奇特的遞迴範本式 24
1.5 小結 25
1.6 練習 26
第 2章 異類詞典與policy範本 28
2.1 具名參數簡介 28
2.2 異類詞典 30
2.2.1 模組的使用方式 30
2.2.2 鍵的表示 32
2.2.3 異類詞典的實現 34
2.2.4 VarTypeDict的性能簡析 41
2.2.5 用std::tuple作為緩存 41
2.3 policy範本 42
2.3.1 policy介紹 42
2.3.2 定義policy與policy物件(範本) 45
2.3.3 使用policy 47
2.3.4 背景知識:支配與虛繼承 49
2.3.5 policy物件與policy支配結構 50
2.3.6 policy選擇元函數 52
2.3.7 使用宏簡化policy物件的聲明 57
2.4 小結 58
2.5 練習 58
第二部分 深度學習框架
第3章 深度學習概述 63
3.1 深度學習簡介 63
3.1.1 從機器學習到深度學習 64
3.1.2 各式各樣的人工神經網絡 65
3.1.3 深度學習系統的組織與訓練 68
3.2 本書所實現的框架:MetaNN 70
3.2.1 從矩陣計算工具到深度學習框架 70
3.2.2 MetaNN介紹 71
3.2.3 本書將要討論的內容 72
3.2.4 本書不會涉及的主題 75
3.3 小結 75
第4章 類型體系與基底資料型別 76
4.1 類型體系 77
4.1.1 類型體系介紹 77
4.1.2 反覆運算器分類體系 78
4.1.3 將標籤作為範本參數 80
4.1.4 MetaNN的類型體系 81
4.1.5 與類型體系相關的元函數 82
4.2 設計理念 84
4.2.1 支援不同的計算設備與計算單元 84
4.2.2 存儲空間的分配與維護 85
4.2.3 淺拷貝與寫操作檢測 88
4.2.4 底層接口擴展 89
4.2.5 類型轉換與求值 91
4.2.6 資料接口規範 92
4.3 標量 92
4.3.1 類範本的聲明 93
4.3.2 基於CPU的特化版本 94
4.3.3 標量的主體類型 95
4.4 矩陣 96
4.4.1 Matrix類範本 96
4.4.2 特殊矩陣:平凡矩陣、全零矩陣與獨熱向量 101
4.4.3 引入新的矩陣類 104
4.5 列表 105
4.5.1 Batch範本 105
4.5.2 Array範本 108
4.5.3 重複與Duplicate範本 113
4.6 小結 116
4.7 練習 116
第5章 運算與運算式範本 119
5.1 運算式範本簡介 119
5.2 MetaNN運算範本的設計思想 122
5.2.1 Add範本的問題 122
5.2.2 運算範本的行為分析 122
5.3 運算分類 124
5.4 輔助範本 125
5.4.1 輔助類範本OperElementType_/OperDeviceType_ 125
5.4.2 輔助類範本OperXXX_ 126
5.4.3 輔助類範本OperCateCal 126
5.4.4 輔助類範本OperOrganizer 128
5.4.5 輔助類範本OperSeq 130
5.5 運算範本的框架 131
5.5.1 運算範本的類別標籤 131
5.5.2 UnaryOp的定義 132
5.6 運算實現示例 133
5.6.1 Sigmoid運算 133
5.6.2 Add運算 136
5.6.3 轉置運算 139
5.6.4 折疊運算 141
5.7 MetaNN已支持的運算列表 141
5.7.1 一元運算 141
5.7.2 二元運算 142
5.7.3 三元運算 144
5.8 運算的折衷與局限性 144
5.8.1 運算的折衷 144
5.8.2 運算的局限性 145
5.9 小結 146
5.10 練習 146
第6章 基本層 148
6.1 層的設計理念 148
6.1.1 層的介紹 148
6.1.2 層物件的構造 150
6.1.3 參數矩陣的初始化與加載 151
6.1.4 正向傳播 152
6.1.5 存儲中間結果 154
6.1.6 反向傳播 154
6.1.7 參數矩陣的更新 155
6.1.8 參數矩陣的獲取 155
6.1.9 層的中性檢測 156
6.2 層的輔助邏輯 156
6.2.1 初始化模組 156
6.2.2 DynamicData類範本 161
6.2.3 層的常用policy對象 166
6.2.4 InjectPolicy元函數 168
6.2.5 通用I/O結構 168
6.2.6 通用操作函數 169
6.3 層的具體實現 170
6.3.1 AddLayer 170
6.3.2 ElementMulLayer 172
6.3.3 BiasLayer 176
6.4 MetaNN已實現的基本層 181
6.5 小結 183
6.6 練習 184
第7章 複合層與循環層 185
7.1 複合層的接口與設計理念 186
7.1.1 基本結構 186
7.1.2 結構描述語法 187
7.1.3 policy的繼承關係 188
7.1.4 policy的修正 189
7.1.5 複合層的構造函數 190
7.1.6 一個完整的複合層構造示例 190
7.2 policy繼承與修正邏輯的實現 191
7.2.1 policy繼承邏輯的實現 191
7.2.2 policy修正邏輯的實現 194
7.3 ComposeTopology的實現 195
7.3.1 功能介紹 195
7.3.2 拓撲排序演算法介紹 195
7.3.3 ComposeTopology包含的主要步驟 196
7.3.4 結構描述子句與其劃分 196
7.3.5 結構合法性檢查 198
7.3.6 拓撲排序的實現 200
7.3.7 子層產生實體元函數 203
7.4 ComposeKernel的實現 207
7.4.1 類範本的聲明 208
7.4.2 子層物件管理 208
7.4.3 參數獲取、梯度收集與中性檢測 211
7.4.4 參數初始化與加載 212
7.4.5 正向傳播 214
7.4.6 反向傳播 221
7.5 複合層實現示例 221
7.6 循環層 222
7.6.1 GruStep 222
7.6.2 構建RecurrentLayer類範本 224
7.6.3 RecurrentLayer的使用 230
7.7 小結 230
7.8 練習 230
第8章 求值與優化 233
8.1 MetaNN的求值模型 234
8.1.1 運算的層次結構 234
8.1.2 求值子系統的模組劃分 235
8.2 基本求值邏輯 242
8.2.1 主體類型的求值接口 242
8.2.2 非主體基底資料型別的求值 243
8.2.3 運算範本的求值 245
8.2.4 DyanmicData與求值 248
8.3 求值過程的優化 249
8.3.1 避免重複計算 249
8.3.2 同類計算合併 250
8.3.3 多運算協同優化 251
8.4 小結 258
8.5 練習 259
後記—方家休見笑,吾道本艱難 260
