展开全部

主编推荐语

元编程在深度学习框架中的实践与性能优化。

内容简介

本书将以一个深度学习框架的实现为例,讨论如何在一个相对较大的项目中深入应用元编程,为系统性能优化提供了更多的可能。本书分8章,前两章讨论了一些元编程与编译期计算的基本技术,后面六章则讨论了元编程在深度学习框架中的实际应用,涉及到富类型与标签体系、表达式模板、复杂元函数的编写等多个主题,详尽地展示了如何将面向对象与元编程相结合以构造复杂系统。

目录

  • 版权信息
  • 版权
  • 内容提要
  • 推荐序1
  • 推荐序2
  • 推荐序3
  • 作者简介
  • 致谢
  • 前言
  • 资源与支持
  • 第一部分 元编程基础技术
  • 第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 练习
  • 后记——方家休见笑,吾道本艰难
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。