幫助中心 | 我的帳號 | 關於我們

C++模板元編程實戰--一個深度學習框架的初步實現

  • 作者:李偉
  • 出版社:人民郵電
  • ISBN:9787115491701
  • 出版日期:2018/11/01
  • 裝幀:平裝
  • 頁數:268
人民幣:RMB 69 元      售價:
放入購物車
加入收藏夾

內容大鋼
    李偉著的《C++模板元編程實戰--一個深度學習框架的初步實現》以一個深度學習框架的初步實現為例,討論如何在一個相對較大的項目中深入應用元編程,為系統性能優化提供更多的可能。
    本書分為8章,前兩章討論了一些元編程與編譯期計算的基本技術,後面6章則討論了元編程在深度學習框架中的實際應用,涉及富類型與標籤體系、表達式模板、複雜元函數的編寫等多個主題,詳盡地展示了如何將面向對象與元編程相結合以構造複雜系統。
    本書適合具有一定C++基礎的讀者閱讀。對主流深度學習框架的內核有一定了解的讀者,也可以參考本書,對比使用元編程與編譯期計算所實現的深度學習框架與主流的(主要基於面向對象所構造的)深度學習框架之間的差異。

作者介紹
李偉
    李偉,2011年畢業於清華大學,曾經在百度自然語言處理部擔任深度學習機器翻譯系統線上預測部分的開發與維護,目前供職于微軟亞洲工程院。主要研究方向為C++,擁有10余年相關開發經驗,對C++模板元編程與編譯期計算有著濃厚的興趣。喜歡嘗試新的技術,業餘愛好是編程與閱讀。

目錄
第一部分  元編程基礎技術
  第1章  基本技巧
    1.1  元函數與type_traits
      1.1.1  元函數介紹
      1.1.2  類型元函數
      1.1.3  各式各樣的元函數
      1.1.4  type_traits
      1.1.5  元函數與宏
      1.1.6  本書中元函數的命名方式
    1.2  模板型模板參數與容器模板
      1.2.1  模板作為元函數的輸入
      1.2.2  模板作為元函數的輸出
      1.2.3  容器模板
    1.3  順序、分支與循環代碼的編寫
      1.3.1  順序執行的代碼
      1.3.2  分支執行的代碼
      1.3.3  循環執行的代碼
      1.3.4  小心:實例化爆炸與編譯崩潰
      1.3.5  分支選擇與短路邏輯
    1.4  奇特的遞歸模板式
    1.5  小結
    1.6  練習
  第2章  異類詞典與policy模板
    2.1  具名參數簡介
    2.2  異類詞典
      2.2.1  模塊的使用方式
      2.2.2  鍵的表示
      2.2.3  異類詞典的實現
      2.2.4  VarTypeDict的性能簡析
      2.2.5  用std::tuple作為緩存
    2.3  policy模板
      2.3.1  policy介紹
      2.3.2  定義policy與policy對象(模板)
      2.3.3  使用policy
      2.3.4  背景知識:支配與虛繼承
      2.3.5  policy對象與policy支配結構
      2.3.6  policy選擇元函數
      2.3.7  使用宏簡化policy對象的聲明
    2.4  小結
    2.5  練習
第二部分  深度學習框架
  第3章  深度學習概述
    3.1  深度學習簡介
      3.1.1  從機器學習到深度學習
      3.1.2  各式各樣的人工神經網路
      3.1.3  深度學習系統的組織與訓練
    3.2  本書所實現的框架:MetaNN
      3.2.1  從矩陣計算工具到深度學習框架
      3.2.2  MetaNN介紹
      3.2.3  本書將要討論的內容

      3.2.4  本書不會涉及的主題
    3.3  小結
  第4章  類型體系與基本數據類型
    4.1  類型體系
      4.1.1  類型體系介紹
      4.1.2  迭代器分類體系
      4.1.3  將標籤作為模板參數
      4.1.4  MetaNN的類型體系
      4.1.5  與類型體系相關的元函數
    4.2  設計理念
      4.2.1  支持不同的計算設備與計算單元
      4.2.2  存儲空間的分配與維護
      4.2.3  淺拷貝與寫操作檢測
      4.2.4  底層介面擴展
      4.2.5  類型轉換與求值
      4.2.6  數據介面規範
    4.3  標量
      4.3.1  類模板的聲明
      4.3.2  基於CPU的特化版本
      4.3.3  標量的主體類型
    4.4  矩陣
      4.4.1  Matrix類模板
      4.4.2  特殊矩陣:平凡矩陣、全零矩陣與獨熱向量
      4.4.3  引入新的矩陣類
    4.5  列表
      4.5.1  Batch模板
      4.5.2  Array模板
      4.5.3  重複與Duplicate模板
    4.6  小結
    4.7  練習
  第5章  運算與表達式模板
    5.1  表達式模板簡介
    5.2  MetaNN運算模板的設計思想
      5.2.1  Add模板的問題
      5.2.2  運算模板的行為分析
    5.3  運算分類
    5.4  輔助模板
      5.4.1  輔助類模板OperElementType_/OperDeviceType_
      5.4.2  輔助類模板OperXXX_
      5.4.3  輔助類模板OperCateCal
      5.4.4  輔助類模板OperOrganizer
      5.4.5  輔助類模板OperSeq
    5.5  運算模板的框架
      5.5.1  運算模板的類別標籤
      5.5.2  UnaryOp的定義
    5.6  運算實現示例
      5.6.1  Sigmoid運算
      5.6.2  Add運算
      5.6.3  轉置運算
      5.6.4  摺疊運算

    5.7  MetaNN已支持的運算列表
      5.7.1  一元運算
      5.7.2  二元運算
      5.7.3  三元運算
    5.8  運算的折衷與局限性
      5.8.1  運算的折衷
      5.8.2  運算的局限性
    5.9  小結
    5.10  練習
  第6章  基本層
    6.1  層的設計理念
      6.1.1  層的介紹
      6.1.2  層對象的構造
      6.1.3  參數矩陣的初始化與載入
      6.1.4  正向傳播
      6.1.5  存儲中間結果
      6.1.6  反向傳播
      6.1.7  參數矩陣的更新
      6.1.8  參數矩陣的獲取
      6.1.9  層的中性檢測
    6.2  層的輔助邏輯
      6.2.1  初始化模塊
      6.2.2  DynamicData類模板
      6.2.3  層的常用policy對象
      6.2.4  InjectPolicy元函數
      6.2.5  通用I/O結構
      6.2.6  通用操作函數
    6.3  層的具體實現
      6.3.1  AddLayer
      6.3.2  ElementMulLayer
      6.3.3  BiasLayer
    6.4  MetaNN已實現的基本層
    6.5  小結
    6.6  練習
  第7章  複合層與循環層
    7.1  複合層的介面與設計理念
      7.1.1  基本結構
      7.1.2  結構描述語法
      7.1.3  policy的繼承關係
      7.1.4  policy的修正
      7.1.5  複合層的構造函數
      7.1.6  一個完整的複合層構造示例
    7.2  policy繼承與修正邏輯的實現
      7.2.1  policy繼承邏輯的實現
      7.2.2  policy修正邏輯的實現
    7.3  ComposeTopology的實現
      7.3.1  功能介紹
      7.3.2  拓撲排序演算法介紹
      7.3.3  ComposeTopology包含的主要步驟
      7.3.4  結構描述子句與其劃分

      7.3.5  結構合法性檢查
      7.3.6  拓撲排序的實現
      7.3.7  子層實例化元函數
    7.4  ComposeKernel的實現
      7.4.1  類模板的聲明
      7.4.2  子層對象管理
      7.4.3  參數獲取、梯度收集與中性檢測
      7.4.4  參數初始化與載入
      7.4.5  正向傳播
      7.4.6  反向傳播
    7.5  複合層實現示例
    7.6  循環層
      7.6.1  GruStep
      7.6.2  構建RecurrentLayer類模板
      7.6.3  RecurrentLayer的使用
    7.7  小結
    7.8  練習
  第8章  求值與優化
    8.1  MetaNN的求值模型
      8.1.1  運算的層次結構
      8.1.2  求值子系統的模塊劃分
    8.2  基本求值邏輯
      8.2.1  主體類型的求值介面
      8.2.2  非主體基本數據類型的求值
      8.2.3  運算模板的求值
      8.2.4  DyanmicData與求值
    8.3  求值過程的優化
      8.3.1  避免重複計算
      8.3.2  同類計算合併
      8.3.3  多運算協同優化
    8.4  小結
    8.5  練習
後記——方家休見笑,吾道本艱難

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032