首页>参考读物>计算机科学与技术>人工智能

C#神经网络编程
作者 : [美]马特·R.科尔(Matt R.Cole) 著
译者 : 刘安 译
出版日期 : 2019-06-17
ISBN : 978-7-111-62938-2
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 243
开本 : 16
原书名 : Hands-On Neural Network Programming with C#
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书遵循循序渐进、兼顾理论和实践的原则,从神经网络基本概念入手,以图文并茂的形式生动地讲解激活函数和反向传播等概念原理,并以人脸识别和动作检测为例,让读者直观地了解深度学习的应用场景,在知识内容方面,不但包含决策树、随机森林等常规算法,还重点讲解了LSTM、CNN神经网络等主流算法,在代码实践方面,比较深入地讲解开发细节,详细介绍了相关网络结构、参数调优和各种网络的对照比较,对程序员实际动手有比较强的参考意义。此外,本书还包含了常用激活函数,读者可以方便的在附录中查询相关函数特性,是一本集原理、实践与资料查询为一体的书籍。

图书特色

图书前言

本书将帮助读者学习如何使用C#进行神经网络编程,如何将这种令人兴奋和强大的技术应用到自己的程序中,并向读者示范如何使用开源软件包以及定制软件。我们将从简单的概念和理论入手,深入讲解每个人都能够运用的强大技术。
本书的读者对象
本书面向希望将神经网络技术添加到应用程序中的C#.NET开发人员。
本书的主要内容
第1章提供神经网络的基础知识。
第2章讲解激活函数的概念、目的及其图像形式。我们还将使用开源软件包(如Encog、Aforge和Accord)演示一个小型C#应用程序,并进行可视化呈现。
第3章帮助你理解决策树和随机森林的概念以及使用方法。
第4章学习如何运用Accord.Net机器学习框架连接到本地视频录制设备,通过捕获摄像机视野内任何物体的实时图像,跟踪视野中出现的人脸。
第5章重点关注如何使用开源软件包ConvNetSharp训练CNN,通过示例为读者讲解相关概念。
第6章教你使用开源软件包RNNSharp的自动编码器来解析和处理各种文本语料库。
第7章介绍粒子群优化如何取代神经网络训练方法,如用于训练神经网络的后向传播。
第8章介绍作为每个神经网络重要组成部分的函数优化。
第9章讲解如何使用数字和启发式优化技术轻松地找到神经网络函数的最佳参数。
第10章解析开源软件包TensorFlowSharp。
第11章使用Microsoft认知工具包(以前称为CNTK)以及长短期记忆(LSTM)网络完成时间序列预测。
第12章讲解门控循环单元(GRU),并将其与其他类型的神经网络进行比较。
附录A列出不同的激活函数及其函数图像。
附录B包括不同的优化函数。
学习本书的要求
在本书中,假设读者具有C#.NET的基础知识,熟悉C#.NET软件开发,并且能够熟练使用Microsoft Visual Studio。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

上架指导

计算机\人工智能

封底文字

在过去几年里,神经网络华丽回归,并为人工智能领域带来了重大的创新。
本书旨在为C#程序员使用神经网络、CNTK等C#库和TensorFlowSharp解决复杂的计算问题时,提供实践指导。本书逐步讲解编程实践,涵盖从数学到理论等神经网络的各个方面,帮助你运用C#和.NET框架构建深度神经网络。
本书从神经网络入门知识开始,详细介绍如何使用Encog、Aforge和Accord搭建一个神经网络,帮助你深入理解神经网络相关概念和技术,例如深度网络、感知器、优化算法、卷积网络和自动解码器。此外,还详细讲解如何向.NET应用程序中添加智能特性,例如面部和运动检测、对象检测和标注、语言理解、知识和智能搜索。
通过阅读本书,你将学到:
理解感知器以及如何运用C#来实现。
使用认知服务训练并可视化神经网络。
运用C#和TensorFlowSharp对物体进行图像识别和标注。
使用Accord.Net检测面部等特定图像特征。
针对简单异或问题和Encog演示粒子群优化。
使用ConvNetSharp训练卷积神经网络。
运用数字和启发式优化技术为神经网络函数寻找最优参数。

作者简介

[美]马特·R.科尔(Matt R.Cole) 著:马特·R.科尔(Matt R. Cole)是一名经验丰富的开发人员和作者,在Microsoft Windows、C、C++、 C#和.NET方面有30年的经验。他是Evolved AI Solutions公司的老板,该公司是高级机器学习/生物AI技术的主要供应商。他开发了第一个完全用C#和.NET编写的企业级微服务框架,该框架被纽约一家大型对冲基金生产。他还开发了第一个完全整合镜像和标准神经元的生物人工智能框架。

译者序

近年来人工智能技术不断发展,特别是随着算力和算法的进步,以及数据的不断丰富,深度学习技术又重新焕发生机。自AlphaGo系列打败围棋世界冠军李世石和柯洁以来,人工智能成为全社会关注的焦点。近期美国的OpenAI公司和英国的DeepMind公司的人工智能程序又分别在《DOTA2》和《星际争霸2》游戏中战胜了职业玩家。深度学习和强化学习正在向复杂应用拓展,人工智能已经成为IT界的又一个风口,全民掀起了一股学习人工智能的热潮。但纵观深度学习开发领域,Python、R和MATLAB一直牢牢占据主导地位,开源项目和软件包也都以上述语言为主。C#语言类深度学习开发资源相对较少,市面上好的C#深度学习的书籍也比较稀缺。本书作者是一名C#程序员和深度学习专家,在本书中,他以C#语言为中心,介绍了如何运用C#快速入门深度学习开发,帮助全球数百万名C#程序员轻松掌握深度学习应用编程。
本书遵循循序渐进、兼顾理论和实践的原则,从神经网络的基本概念入手,图文并茂地讲解激活函数和后向传播等概念、原理,以面部和运动检测为例,让读者直观地了解深度学习的应用场景,并详细讲述决策树、随机森林等常规机器学习算法,还重点讲解了LSTM、CNN神经网络等主流算法。在代码实践方面,作者为每个算法都编写了相应的程序,并配有详细注释,细致讲解代码内容,让读者容易抓住重点,快速动手编程。同时,本书比较注重开发细节,作为资深项目开发人员,作者细致分析了编程过程中会碰到的问题,详细介绍了神经网络结构调整、参数调优的原则,并对各种神经网络算法优劣进行了比较,对程序员实际动手有很强的参考意义。此外,本书还对常用的激活函数的函数形式、数学图像进行了系统梳理,读者可以在附录中方便地查询相关的函数特性。本书是一本集原理、实践与资料查询于一体的优秀书籍。
本书适合任何想要学习神经网络的C#程序员,学习的难度曲线比较平滑,语言通俗易懂。作者秉承兼容并蓄的态度,主张使用优秀开源软件包和框架,倡导拿来主义和自我创造相结合,如果你是C#程序员,如果你想学习深度学习,如果你还不知道选哪本书,那么,本书就是一本值得你阅读的好书。

刘安
2019年3月

图书目录

译者序
前言
关于作者
关于审校者
第1章 快速预览 1
1.1 神经网络概述 2
1.1.1 神经网络训练 4
1.1.2 神经网络的结构指南 4
1.2 神经网络在当今企业中的作用 6
1.3 学习的类型 6
1.3.1 有监督学习 7
1.3.2 无监督学习 7
1.3.3 强化学习 7
1.4 了解感知器 7
1.5 了解激活函数 10
1.5.1 激活函数绘图 12
1.5.2 函数绘图 13
1.6 了解后向传播 16
1.7 小结 17
1.8 参考文献 17
第2章 构建第一个神经网络 18
2.1 一个简单的神经网络 18
2.2 神经网络训练 19
2.2.1 突触 20
2.2.2 神经元 21
2.2.3 前向传播 21
2.2.4 Sigmoid函数 21
2.2.5 后向传播 22
2.2.6 计算误差 23
2.2.7 计算梯度 23
2.2.8 更新权重 23
2.2.9 计算值 23
2.3 神经网络函数 24
2.3.1 创建新网络 24
2.3.2 导入现有网络 24
2.3.3 导入数据集 27
2.3.4 网络运算 27
2.3.5 导出网络 28
2.3.6 训练网络 28
2.3.7 测试网络 29
2.3.8 计算前向传播 29
2.3.9 将网络导出为JSON格式 29
2.3.10 导出数据集 30
2.4 神经网络 30
2.5 例子 31
2.5.1 训练到最小值 31
2.5.2 训练到最大值 31
2.6 小结 32
第3章 决策树和随机森林 33
3.1 决策树 33
3.1.1 决策树的优点 34
3.1.2 决策树的缺点 35
3.1.3 何时应该使用决策树 35
3.2 随机森林 35
3.2.1 随机森林的优点 36
3.2.2 随机森林的缺点 36
3.2.3 何时应该使用随机森林 36
3.3 SharpLearning 37
3.3.1 术语 37
3.3.2 加载和保存模型 37
3.4 示例代码和应用程序 41
3.4.1 保存模型 41
3.4.2 均方差回归指标 41
3.4.3 F1分数 41
3.4.4 优化 42
3.4.5 示例应用程序1 42
3.4.6 示例应用程序2—葡萄酒质量 43
3.5 小结 45
3.6 参考文献 45
第4章 面部和运动检测 46
4.1 面部检测 46
4.2 运动检测 54
4.3 小结 59
第5章 使用ConvNetSharp训练CNN 60
5.1 热身 60
5.2 过滤器 64
5.3 创建网络 64
5.3.1 第一个简单的例子 65
5.3.2 第二个简单的例子 66
5.3.3 第三个简单的例子 67
5.3.4 使用Fluent API 68
5.4 GPU 68
5.5 使用MNIST数据集进行流畅设计训练 68
5.6 训练网络 69
5.6.1 测试数据 70
5.6.2 预测数据 71
5.6.3  计算图 71
5.7 小结 73
5.8 参考文献 73
第6章 使用 RNNSharp训练自动编码器 74
6.1 什么是自动编码器 74
6.2 自动编码器的分类 74
6.2.1 标准自动编码器 75
6.2.2 变分自动编码器 76
6.2.3 降噪自动编码器 76
6.2.4 稀疏自动编码器 76
6.3 创建自己的自动编码器 76
6.4 小结 87
6.5 参考文献 88
第7章 用PSO代替后向传播 89
7.1 基础理论 89
7.1.1 群体智能 90
7.1.2 粒子群优化算法 90
7.2 用粒子群优化算法代替后向传播 94
7.3 小结 98
第8章 函数优化 99
8.1 入门 100
8.2 函数最小化和最大化 103
8.2.1 什么是粒子 104
8.2.2 Swarm初始化 106
8.2.3 图表初始化 107
8.2.4 状态初始化 108
8.2.5 控制随机性 109
8.2.6 更新群体位置 110
8.2.7 更新群速度 110
8.2.8 主程序初始化 110
8.2.9 运行粒子群优化 111
8.2.10 用户界面 112
8.3 超参数和调参 113
8.3.1 函数 113
8.3.2 策略 114
8.3.3 维度大小 115
8.3.4 上限 115
8.3.5 下限 116
8.3.6 上限速度 116
8.3.7 下限速度 117
8.3.8 小数位 117
8.3.9 群体大小 117
8.3.10 最大迭代次数 118
8.3.11 惯性 119
8.3.12 社交权重 120
8.3.13 认知权重 121
8.3.14 惯性权重 122
8.4 可视化 122
8.4.1 二维可视化 122
8.4.2 三维可视化 123
8.5 绘制结果 128
8.5.1 回放结果 128
8.5.2 更新信息树 130
8.6 添加新的优化函数 131
8.6.1 目的 131
8.6.2 添加新函数的步骤 131
8.6.3 添加新函数示例 132
8.7 小结 135
第9章 寻找最佳参数 136
9.1 优化 136
9.1.1 什么是适配函数 137
9.1.2 约束 137
9.1.3 元优化 139
9.2 优化方法 141
9.2.1 选择优化器 141
9.2.2 梯度下降 141
9.2.3 模式搜索 141
9.2.4 局部单峰采样 142
9.2.5 差异进化 142
9.2.6 粒子群优化 143
9.2.7 多优化联络员 143
9.2.8 网格 143
9.3 并行 144
9.3.1 并行化优化问题 144
9.3.2 并行优化方法 144
9.3.3 编写代码 144
9.3.4 执行元优化 146
9.3.5 计算适配度 146
9.3.6 测试自定义问题 148
9.3.7 基本问题 148
9.3.8 创建自定义问题 151
9.3.9 自定义问题示例 153
9.4 小结 154
9.5 参考文献 155
第10章 使用TensorFlowSharp进行对象检测 157
10.1 使用张量 157
10.2 开发自己的TensorFlow应用程序 161
10.3 检测图像 163
10.4 小结 166
10.5 参考文献 166
第11章 使用CNTK进行时间序列预测和LSTM 167
11.1 长短期记忆 167
11.1.1 LSTM变体 168
11.1.2 LSTM的应用 170
11.2 CNTK术语 170
11.3 示例应用程序 171
11.3.1 编写应用程序代码 174
11.3.2 运行应用程序 175
11.3.3 训练网络 176
11.3.4 创建模型 177
11.3.5 创建批量数据 178
11.3.6 获取下一批数据 178
11.4 LSTM的表现 178
11.5 小结 179
11.6 参考文献 179
第12章 GRU与LSTM、RNN和前馈神经网络 181
12.1 QuickNN 181
12.2 了解GRU 182
12.3 LSTM和GRU之间的差别 182
12.4 构建不同的网络 183
12.4.1 编写LSTM代码 184
12.4.2 编写GRU代码 184
12.5 比较LSTM、GRU、前馈和RNN网络的相关操作 185
12.6 网络差异 187
12.7 小结 189
附录A 激活函数 190
附录B 函数优化参考 194

教学资源推荐
作者: [日]杉山将(Masashi Sugiyama)著
作者: (美)Ramesh Jain,Rangachar Kasturi,Brian G.Schunck
作者: [以] 沙伊·沙莱夫-施瓦茨(Shai Shalev-Shwartz)[加] 沙伊·本-戴维(Shai Ben-David) 著
作者: [美] 韦斯利·E.斯奈德(Wesley E. Snyder) 戚海蓉(Hairong Qi) 著
参考读物推荐
作者: 陈雨强 郑曌 谭中意 卢冕 等
作者: [美] 尼克·麦克卢尔(Nick McClure) 著
作者: [美]马克·E. 芬纳(Mark E. Fenner) 著
作者: 赵涓涓 强彦 主编