| 作者 |
| 刘忠雨 李彦霖 周洋马智 |
| 丛书名 |
| 智能系统与技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782001101041 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------深入浅出图神经网络:GNN原理解析--------------------------- 内容简介 这是一本从原理、算法、实现、应用4个维度详细讲解图神经网络的著作,在图神经网络领域具有重大的意义。 本书作者是图神经网络领域的资深技术专家,作者所在的公司极验也是该领域的领先者。本书是作者和极验多年研究和实践经验的总结,内容系统、扎实、深入浅出,得到了白翔、俞栋等几位来自学术界和企业界的领军人物的高度评价和强烈推荐。 全书共10章: 第1~4章全面介绍了图、图数据、卷积神经网络以及表示学习等基础知识,是阅读本书的预备知识; 第5~6章从理论的角度出发,讲解了图信号处理和图卷积神经网络,深入剖析了图卷积神经网络的性质,并提供了GCN实现节点分类的实例。 第7~9章全面的讲解了图神经网络的各种变体及范式、图分类机制及其实践,以及基于GNN的图表示学习; 第10章介绍了图神经网络的最新研究和应用。 ---------------------------深入解析Java编译器:源码剖析与实例详解--------------------------- 本书针对Java语言的编译器源码进行深度剖析,所以本书面向的读者主要是那些想深入研究Java语言运行原理的人。另外本书还可以用作编译原理的学习,通过强实践来达到学习的目的,所以对于想学习编译原理的人,如软件专业的学生,也是一个很好的选择。 . 本书共18章,5个附录,涵盖-Javac文件系统、词法分析、语法分析、符号表、语义分析、泛型、数据流、语法糖、字节码、Class文件等大量内容。由于Java编译器有10万行以上的代码,并且逻辑周密,细节众多。为了能够让读者更好的理解其中的要点,本书将会有大量的配图和实例,并且要对重点源代码展开细致的讲解。 |
| 目录 |
---------------------------深入浅出图神经网络:GNN原理解析--------------------------- 前言 第1章 图的概述 1 1.1 图的基本定义 1 1.1.1 图的基本类型 2 1.1.2 邻居和度 4 1.1.3 子图与路径 4 1.2 图的存储与遍历 5 1.2.1 邻接矩阵与关联矩阵 5 1.2.2 图的遍历 6 1.3 图数据的应用场景 7 1.4 图数据深度学习 10 1.5 参考文献 13 第2章 神经网络基础 17 2.1 机器学习基本概念 17 2.1.1 机器学习分类 17 2.1.2 机器学习流程概述 18 2.1.3 常见的损失函数 21 2.1.4 梯度下降算法 23 2.2 神经网络 25 2.2.1 神经元 25 2.2.2 多层感知器 27 2.3 激活函数 29 2.3.1 S型激活函数 30 2.3.2 ReLU及其变种 30 2.4 训练神经网络 33 2.4.1 神经网络的运行过程 34 2.4.2 反向传播 34 2.4.3 优化困境 36 2.5 参考文献 38 第3章 卷积神经网络 39 3.1 卷积与池化 39 3.1.1 信号处理中的卷积 39 3.1.2 深度学习中的卷积操作 42 3.1.3 池化 46 3.2 卷积神经网络 46 3.2.1 卷积神经网络的结构 47 3.2.2 卷积神经网络的特点 49 3.3 特殊的卷积形式 51 3.3.1 1×1卷积 51 3.3.2 转置卷积 52 3.3.3 空洞卷积 54 3.3.4 分组卷积 55 3.3.5 深度可分离卷积 55 3.4 卷积网络在图像分类中的应用 56 3.4.1 VGG 56 3.4.2 Inception系列 57 3.4.3 ResNet 60 3.5 参考文献 62 第4章 表示学习 65 4.1 表示学习 65 4.1.1 表示学习的意义 65 4.1.2 离散表示与分布式表示 66 4.1.3 端到端学习是一种强大的表示学习方法 68 4.2 基于重构损失的方法—自编码器 69 4.2.1 自编码器 69 4.2.2 正则自编码器 71 4.2.3 变分自编码器 72 4.3 基于对比损失的方法—Word2vec 75 4.4 参考文献 79 第5章 图信号处理与图卷积神经网络 81 5.1 矩阵乘法的三种方式 81 5.2 图信号与图的拉普拉斯矩阵 83 5.3 图傅里叶变换 85 5.4 图滤波器 90 5.4.1 空域角度 93 5.4.2 频域角度 94 5.5 图卷积神经网络 96 5.6 GCN实战 101 5.7 参考文献 109 第6章 GCN的性质 111 6.1 GCN与CNN的联系 111 6.2 GCN能够对图数据进行端对端学习 115 6.3 GCN是一个低通滤波器 120 6.4 GCN的问题—过平滑 122 6.5 参考文献 127 第7章 GNN的变体与框架 129 7.1 GraphSAGE 129 7.1.1 采样邻居 130 7.1.2 聚合邻居 131 7.1.3 GraphSAGE算法过程 132 7.2 GAT 134 7.2.1 注意力机制 134 7.2.2 图注意力层 137 7.2.3 多头图注意力层 138 7.3 R-GCN 140 7.3.1 知识图谱 140 7.3.2 R-GCN 141 7.4 GNN的通用框架 143 7.4.1 MPNN 143 7.4.2 NLNN 146 7.4.3 GN 147 7.5 GraphSAGE实战 148 7.6 参考文献 153 第8章 图分类 155 8.1 基于全局池化的图分类 155 8.2 基于层次化池化的图分类 156 8.2.1 基于图坍缩的池化机制 157 8.2.2 基于TopK的池化机制 165 8.2.3 基于边收缩的池化机制 168 8.3 图分类实战 169 8.4 参考文献 177 第9章 基于GNN的图表示学习 179 9.1 图表示学习 180 9.2 基于GNN的图表示学习 182 9.2.1 基于重构损失的GNN 183 9.2.2 基于对比损失的GNN 184 9.3 基于图自编码器的推荐系统 188 9.4 参考文献 195 第10章 GNN的应用简介 197 10.1 GNN的应用简述 197 10.2 GNN的应用案例 199 10.2.1 3D视觉 199 10.2.2 基于社交网络的推荐系统 203 10.2.3 视觉推理 205 10.3 GNN的未来展望 208 10.4 参考文献 209 附录A 符号声明 211 ---------------------------深入解析Java编译器:源码剖析与实例详解--------------------------- 前言 第1章 Javac介绍 1 1.1 初识Javac 1 1.2 Javac源码与调试 4 1.3 Javac命令 7 第2章 Javac文件系统 12 2.1 文件相关实现类 12 2.2 文件的管理 25 2.2.1 获取JavacFileManager对象 25 2.2.2 StandardLocation类 28 2.2.3 JavacFileManager类 31 第3章 词法分析 38 3.1 字符编码 38 3.2 获取字符输入流 40 3.3 Token与Name 43 3.3.1 Token介绍 44 3.3.2 Name对象的生成与存储 47 3.3.3 Name映射为Token 51 3.4 生成Token流 52 第4章 语法分析之认识树节点 67 4.1 定义及声明 68 4.1.1 JCCompilationUnit类 68 4.1.2 JCImport类 69 4.1.3 JCClassDecl类 70 4.1.4 JCModifiers类 71 4.1.5 JCTypeParameter类 72 4.1.6 JCVariableDecl类 72 4.1.7 JCMethodDecl类 74 4.2 语句 75 4.2.1 JCBlock类 75 4.2.2 JCIf类 76 4.2.3 JCWhileLoop、JCDoWhileLoop、JCForLoop与JCEnhancedForLoop类 78 4.2.4 JCSwitch与JCCase类 79 4.2.5 JCTry、JCCatch与JCThrow类 81 4.2.6 JCLabeledStatement、JCReturn、JCContinue与JCBreak类 82 4.2.7 JCSynchronized类 83 4.2.8 JCAssert类 83 4.3 表达式 83 4.3.1 基本表达式 84 4.3.2 含运算符的表达式 88 4.3.3 类型相关表达式 94 4.3.4 注解表达式 97 4.4 生成树节点 98 第5章 语法分析之建立抽象语法树 101 5.1 定义及声明的抽象语法树 101 5.2 语句的抽象语法树 112 5.3 表达式的抽象语法树 121 5.3.1 基本表达式 122 5.3.2 含有运算符的表达式 134 5.4 遍历抽象语法树 140 第6章 符号表的组织 143 6.1 符号的定义 143 6.1.1 Symbol类 144 6.1.2 TypeSymbol及其子类 150 6.1.3 VarSymbol类 154 6.1.4 MethodSymbol及OperatorSymbol类 154 6.2 符号表的组织 160 6.2.1 Env类介绍 160 6.2.2 AttrContext类介绍 162 6.2.3 Scope类介绍 163 6.2.4 符号表的建立 164 6.3 类型的定义 169 6.3.1 普通类型的定义 169 6.3.2 泛型相关类型的定义 175 第7章 填充符号表 180 7.1 依赖的处理 180 7.1.1 创建包或类符号 180 7.1.2 输入包或类下的成员符号 184 7.2 符号输入的第一阶段 189 7.2.1 Enter类 190 7.2.2 visitTopLevel()方法 192 7.2.3 visitClassDef()方法 193 7.2.4 visitTypeParameter()方法 196 7.3 符号输入第二阶段 197 7.3.1 MemberEnter类 197 7.3.2 visitImport()方法 200 7.3.3 visitMethodDef()方法 207 7.3.4 visitVarDef()方法 209 第8章 插入式注解的实现 211 8.1 注解处理器基础 211 8.1.1 编写注解处理器 211 8.1.2 注解配置 215 8.1.3 工具类 215 8.2 初始化注解处理器 222 8.3 运行注解处理器 226 第9章 语义分析之类型转换 233 9.1 类型转换的种类 233 9.2 赋值转换 245 9.3 方法调用转换 253 9.4 强制类型转换 254 9.5 数字提升 266 第10章 语义分析之语法检查 269 10.1 类型定义的检查 269 10.1.1 父类及实现接口的检查 269 10.1.2 类型定义的唯一性检查 273 10.1.3 类型中方法的兼容性检查 276 10.1.4 类型中实现方法的检查 287 10.2 变量定义的检查 294 10.3 方法定义的检查 296 10.3.1 方法的唯一性检查 296 10.3.2 方法的隐藏 298 10.3.3 方法的覆写 303 第11章 语义分析之引用消解 307 11.1 Resolve类介绍 307 11.2 类型引用的消解 310 11.3 变量引用的消解 320 11.4 方法引用的消解 323 第12章 语义分析之语法树标注 345 12.1 Attr类介绍 346 12.2 表达式相关树节点的标注 348 12.2.1 JCUnary树节点标注 348 12.2.2 JCBinary树节点的标注 350 12.2.3 JCAssignOp树节点的标注 351 12.3 JCIdent树节点的标注 351 12.4 JCFieldAccess树节点的标注 354 第13章 泛型的实现 361 13.1 泛型类型 361 13.2 泛型方法 364 13.2.1 类型推断 365 13.2.2 钻石语法 383 13.3 泛型擦除 386 第14章 数据流检查 396 14.1 Flow类介绍 396 14.1.1 语句的活跃性分析 396 14.1.2 变量赋值检查 398 14.1.3 异常检查 405 14.2 if语句的分析 405 14.2.1 if语句 405 14.2.2 一元表达式与if语句 409 14.2.3 二元表达式与if语句 410 14.2.4 三元表达式与if语句 412 14.3 循环语句的分析 413 14.3.1 for语句 413 14.3.2 中断循环语句 416 14.4 try语句与throw语句的分析 419 14.4.1 抛出异常 419 14.4.2 异常检查 424 14.4.3 变量赋值状态及语句的活跃性 430 第15章 语法糖去除 435 15.1 简单语法糖 436 15.1.1 变长参数 436 15.1.2 条件编译 437 15.1.3 自动装箱与拆箱 438 15.2 语句语法糖 440 15.2.1 foreach语句 440 15.2.2 switch语句 442 15.2.3 try-with-resources语句 447 15.3 枚举类语法糖 452 15.4 内部类语法糖 453 15.4.1 调用私有构造方法 454 15.4.2 引用成员 457 15.4.3 super关键字引用父类成员 470 15.4.4 访问自由变量 472 第16章 字节码指令生成 486 16.1 字节码指令集 486 16.2 生成字节码指令 492 16.2.1 实现本地变量表 492 16.2.2 实现操作数栈 495 16.2.3 常量池信息的存储 497 16.2.4 Code类介绍 499 16.3 Gen类介绍 502 16.4 可寻址实体Item 506 16.4.1 LocalItem类 508 16.4.2 ImmediateItem类 512 16.4.3 StackItem类 514 16.4.4 AssignItem类 515 16.4.5 StaticItem类 517 16.4.6 MemberItem类 520 16.4.7 SelfItem类 523 16.4.8 IndexedItem类 524 第17章 重要结构的字节码指令生成 527 17.1 控制转移指令与地址回填 527 17.1.1 认识控制转移指令 527 17.1.2 地址回填 529 17.2 语句的条件判断表达式 530 17.2.1 CondItem类 530 17.2.2 一元与二元条件判断表达式 533 17.2.3 三元条件判断表达式 534 17.3 if语句 536 17.4 循环语句 537 17.5 switch语句 539 17.6 异常与finally语句 545 17.6.1 异常的抛出 545 17.6.2 异常的捕获与finally语句 545 第18章 生成Class文件 553 18.1 Class文件的结构 553 18.2 魔数与版本 556 18.3 常量池 556 18.4 类定义的基本信息 562 18.4.1 访问标识符 562 18.4.2 类、父类及接口集合 564 18.5 字段集合 565 18.6 方法集合 570 18.7 类属性集合 575 18.8 描述符和签名 581 18.8.1 描述符 581 18.8.2 签名 582 18.8.3 描述符与签名的实现 585 附录A Javac命令 589 附录B 文法 592 附录C 类型常见操作 600 C.1 supertype()方法 600 C.2 interfaces()方法 604 C.3 asSuper()方法 606 C.4 asOuterSuper()方法 608 C.5 isSameType()方法 609 C.6 L()与U()方法 615 C.7 lowerBound()与upperBound()方法 616 C.8 containsType()方法 617 C.9 hasSameArgs()方法 621 C.10 subst()方法 623 C.11 memberType()方法 626 C.12 erasure()与erasureRecursive()方法 628 附录D 符号常见操作 632 D.1 isInheritedIn()方法 632 D.2 hiddenIn()方法 633 D.3 isMemberOf()方法 634 D.4 overrides()方法 635 D.5 implementation()方法 639 附录E 虚拟机字节码指令表 645 E.1 加载与存储指令 645 E.2 运算指令 648 E.3 类型转换指令 650 E.4 对象操作指令 651 E.5 操作数栈管理指令 652 E.6 控制转移指令 652 E.7 方法调用和返回指令 653 E.8 异常抛出指令 654 E.9 同步指令 654 |