当前位置:首页 > 人工智能 >
《深度学习之美:AI时代的数据处理与最佳实践》电子书封面

深度学习之美:AI时代的数据处理与最佳实践

  • 发布时间:2019年05月08日 17:26:54
  • 作者:张玉宏
  • 大小:88.68 MB
  • 类别:深度学习电子书
  • 格式:PDF
  • 版本:原书完整版
  • 评分:9.1

    深度学习之美:AI时代的数据处理与最佳实践 PDF 原书完整版

      给大家带来的一篇关于深度学习相关的电子书资源,介绍了关于深度学习、AI、数据处理方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小88.68 MB,张玉宏编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.5分

      Tags:数据处理 深度学习 AI 

      内容介绍

      深度学习之美:AI时代的数据处理与最佳实践

      深度学习之美:AI时代的数据处理与最佳实践 电子书封面

      读者评价

      写作风格确实很不错,通俗易懂,点赞! 此外,作者的写作态度是严谨的(我说的是很用心呢),有的章节读起来还挺有趣。 这是一本有料,有趣,有情怀的深度学习技术图书。
      作者的技术水平扛扛的,而且时不时引用哲学和文学著作,也比较通俗易懂,适合反复查阅。不过,价格太贵了。作为教材的话,数学推导证明又少了点。
      算是中文书籍里面有关深度学习科普的高水平之作了。
      比之某些在知乎和豆瓣上被吹的连小学生都可以看懂的科普书籍,这本书才算是真正的典范,将深度学习的各种方面都提了一遍,但是不过分深入,还配以代码,以及有作者自己的解释,实属不易。
      美中不足的一点是有些地方的口水话还是太多,而且图片如果换做是彩色的兴许对初学者吸引力更大

      内容介绍

      深度学习是人工智能的前沿技术。本书深入浅出地介绍了深度学习的相关理论和实践,全书共分16章,采用理论和实践双主线写作方式。

      第1章给出深度学习的大图。第2章和第3章,讲解了机器学习的相关基础理论。第4章和第5章,讲解了Python基础和基于Python的机器学习实战。第6至10章,先后讲解了M-P模型、感知机、多层神经网络、BP神经网络等知识。第11章讲解了被广泛认可的深度学习框架TensorFlow。第12章和第13章详细讲解了卷积神经网络,并给出了相关的实战项目。第14章和第15章,分别讲解了循环递归网络和长短期记忆(LSTM)网络。第16章讲解了神经胶囊网络,并给出了神经胶囊网络设计的详细论述和实践案例分析。

      目录

      • 第1章 一入侯门“深”似海,深度学习深几许 ........... 1
      • 1.1 深度学习的巨大影响 .....................................2
      • 1.2 什么是学习 ..... 4
      • 1.3 什么是机器学习 ........................................... 4
      • 1.4 机器学习的4个象限 ......................................5
      • 1.5 什么是深度学习 .......................................... 6
      • 1.6 “恋爱”中的深度学习 .................................... 7
      • 1.7 深度学习的方法论 .......................................9
      • 1.8 有没有浅层学习 ..........................................13
      • 1.9 本章小结 ....... 14
      • 1.10 请你思考 ..... 14
      • 参考资料 ................ 14
      • 第2章 人工“碳”索意犹尽,智能“硅”来未可知 . 16
      • 2.1 信数据者得永生吗 .....................................17
      • 2.2 人工智能的“江湖定位”............................... 18
      • 2.3 深度学习的归属 ........................................19
      • 2.4 机器学习的形式化定义 ...............................21
      • 2.5 为什么要用神经网络 ...................................24
      • 2.6 人工神经网络的特点 .................................. 26
      • 2.7 什么是通用近似定理 .................................. 27
      • 2.8 本章小结 ....... 31
      • 2.9 请你思考 ....... 31
      • 参考资料 ................ 31
      • 第3章 “机器学习”三重门,“中庸之道”趋若人 ... 33
      • 3.1 监督学习 ....... 34
      • 3.1.1 感性认知监督学习 ..................................34
      • 3.1.2 监督学习的形式化描述 ........................... 35
      • 3.1.3 k-近邻算法 ...........................................37
      • 3.2 非监督学习 ... 39
      • 3.2.1 感性认识非监督学习 .............................. 39
      • 3.2.2 非监督学习的代表—K均值聚类 ........... 41
      • 3.3 半监督学习 ... 45
      • 3.4 从“中庸之道”看机器学习............................ 47
      • 3.5 强化学习 ....... 49
      • 3.6 本章小结 ....... 52
      • 3.7 请你思考 ....... 53
      • 参考资料 ................ 53
      • 第4章 人生苦短对酒歌, 我用Python乐趣多 ........55
      • 4.1 Python概要 ... 56
      • 4.1.1 为什么要用Python ................................. 56
      • 4.1.2 Python中常用的库 ..................................58
      • 4.2 Python的版本之争 .....................................61
      • 4.3 Python环境配置 ....................................... 65
      • 4.3.1 Windows下的安装与配置 .........................65
      • 4.3.2 Mac下的安装与配置 .................................72
      • 4.4 Python编程基础 ....................................... 76
      • 4.4.1 如何运行Python代码 ................................77
      • 4.4.2 代码缩进 ................................................79
      • 4.4.3 注释 ... 80
      • 4.4.4 Python中的数据结构 ................................ 81
      • 4.4.5 函数的设计 ............................................. 93
      • 4.4.6 模块的导入与使用 .................................... 101
      • 4.4.7 面向对象程序设计 .................................... 102
      • 4.5 本章小结 ..... 112
      • 4.6 请你思考 ..... 112
      • 参考资料 .............. 113
      • 第5章 机器学习终觉浅,Python带我来实践 ......... 114
      • 5.1 线性回归 ..... 115
      • 5.1.1 线性回归的概念 .......................................115
      • 5.1.2 简易线性回归的Python实现详解 ........... 119
      • 5.2 k-近邻算法 .. 139
      • 5.2.1 k-近邻算法的三个要素 ............................. 140
      • 5.2.2 k-近邻算法实战 .......................................143
      • 5.2.3 使用scikit-learn实现k-近邻算法 ............ 155
      • 5.3 本章小结 ..... 162
      • 5.4 请你思考 ..... 162
      • 参考资料 .............. 162
      • 第6章 神经网络不胜语,M-P模型似可寻 ............. 164
      • 6.1 M-P神经元模型是什么 ................................165
      • 6.2 模型背后的那些人和事 .................................167
      • 6.3 激活函数是怎样的一种存在............................175
      • 6.4 什么是卷积函数 ..........................................176
      • 6.5 本章小结 ..... 177
      • 6.6 请你思考 ..... 178
      • 参考资料 .............. 178
      • 第7章 Hello World感知机,懂你我心才安息 ......... 179
      • 7.1 网之初,感知机 ...........................................180
      • 7.2 感知机名称的由来 ........................................180
      • 7.3 感性认识“感知机” ........................................183
      • 7.4 感知机是如何学习的 ......................................185
      • 7.5 感知机训练法则 ............................................187
      • 7.6 感知机的几何意义 .........................................190
      • 7.7 基于Python的感知机实战 ..............................191
      • 7.8 感知机的表征能力 .........................................196
      • 7.9 本章小结 ..... 199
      • 7.10 请你思考 ... 199
      • 参考资料 .............. 199
      • 第8章 损失函数减肥用,神经网络调权重 ............201
      • 8.1 多层网络解决“异或”问题........................... 202
      • 8.2 感性认识多层前馈神经网络........................ 205
      • 8.3 是浅而“胖”好,还是深而“瘦”佳 ................. 209
      • 8.4 分布式特征表达 ......................................... 210
      • 8.5 丢弃学习与集成学习 ................................... 211
      • 8.6 现实很丰满,理想很骨感.............................. 212
      • 8.7 损失函数的定义 ......................................... 213
      • 8.8 热力学定律与梯度弥散 ................................ 215
      • 8.9 本章小结 ..... 216
      • 8.10 请你思考 ... 216
      • 参考资料 .............. 217
      • 第9章 山重水复疑无路,最快下降问梯度 .............. 219
      • 9.1 “鸟飞派”还飞不 ......................................... 220
      • 9.2 1986年的那篇神作 .................................... 221
      • 9.3 多层感知机网络遇到的大问题 ....................... 222
      • 9.4 神经网络结构的设计 ................................... 225
      • 9.5 再议损失函数 ............................................ 227
      • 9.6 什么是梯度 . 229
      • 9.7 什么是梯度递减 .......................................... 231
      • 9.8 梯度递减的线性回归实战............................... 235
      • 9.9 什么是随机梯度递减 .................................... 238
      • 9.10 利用SGD解决线性回归实战 ........................ 240
      • 9.11 本章小结 ... 247
      • 9.12 请你思考 ... 248
      • 参考资料 .............. 248
      • 第10章 BP算法双向传,链式求导最缠绵 ............. 249
      • 10.1 BP算法极简史 ........................................... 250
      • 10.2 正向传播信息 ............................................ 251
      • 10.3 求导中的链式法则 ...................................... 255
      • 10.4 误差反向传播 ............................................ 264
      • 10.4.1 基于随机梯度下降的BP算法 .............. 265
      • 10.4.2 输出层神经元的权值训练 ..................... 267
      • 10.4.3 隐含层神经元的权值训练 ..................... 270
      • 10.4.4 BP算法的感性认知 ............................... 273
      • 10.4.5 关于BP算法的补充说明 ...................... 278
      • 10.5 BP算法实战详细解释 ................................ 280
      • 10.5.1 初始化网络 .......................................... 280
      • 10.5.2 信息前向传播 ....................................... 282
      • 10.5.3 误差反向传播 ....................................... 285
      • 10.5.4 训练网络(解决异或问题) ................. 288
      • 10.5.5 利用BP算法预测小麦品种的分类 ...... 293
      • 10.6 本章小结 ... 301
      • 10.7 请你思考 ... 302
      • 参考资料 .............. 304
      • 第11章 一骑红尘江湖笑,TensorFlow谷歌造 ....... 305
      • 11.1 TensorFlow概述 ..................................... 306
      • 11.2 深度学习框架比较 ..................................... 309
      • 11.2.1 Theano .............................................. 309 

      读书笔记

      MySQL查询优化之explain的深入解析

      在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们查询,让查询优化器能够更好的工作。

      一、MySQL 查询优化器是如何工作的
      MySQL 查询优化器有几个目标,但是其中最主要的目标是尽可能地使用索引,并且使用最严格的索引来消除尽可能多的数据行。最终目标是提交 SELECT 语句查找数据行,而不是排除数据行。优化器试图排除数据行的原因在于它排除数据行的速度越快,那么找到与条件匹配的数据行也就越快。如果能够首先进行最严格的测试,查询就可以执行地更快。
      EXPLAIN 的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 

      说明
      id MySQL Query Optimizer 选定的执行计划中查询的序列号。表示查询中执行 select 子句或操作表的顺序,id 值越大优先级越高,越先被执行。id 相同,执行顺序由上至下。


      select_type 查询类型 说明
      SIMPLE 简单的 select 查询,不使用 union 及子查询
      PRIMARY 最外层的 select 查询
      UNION UNION 中的第二个或随后的 select 查询,不 依赖于外部查询的结果集
      DEPENDENT UNION UNION 中的第二个或随后的 select 查询,依 赖于外部查询的结果集
      SUBQUERY 子查询中的第一个 select 查询,不依赖于外 部查询的结果集
      DEPENDENT SUBQUERY 子查询中的第一个 select 查询,依赖于外部 查询的结果集
      DERIVED 用于 from 子句里有子查询的情况。 MySQL 会 递归执行这些子查询, 把结果放在临时表里。
      UNCACHEABLE SUBQUERY 结果集不能被缓存的子查询,必须重新为外 层查询的每一行进行评估。
      UNCACHEABLE UNION UNION 中的第二个或随后的 select 查询,属 于不可缓存的子查询


      说明
      table 输出行所引用的表


      type 重要的项,显示连接使用的类型,按最 优到最差的类型排序 说明
      system 表仅有一行(=系统表)。这是 const 连接类型的一个特例。
      const const 用于用常数值比较 PRIMARY KEY 时。当 查询的表仅有一行时,使用 System。
      eq_ref const 用于用常数值比较 PRIMARY KEY 时。当 查询的表仅有一行时,使用 System。
      ref 连接不能基于关键字选择单个行,可能查找 到多个符合条件的行。 叫做 ref 是因为索引要 跟某个参考值相比较。这个参考值或者是一 个常数,或者是来自一个表里的多表查询的 结果值。
      ref_or_null 如同 ref, 但是 MySQL 必须在初次查找的结果 里找出 null 条目,然后进行二次查找。
      index_merge 说明索引合并优化被使用了。
      unique_subquery 在某些 IN 查询中使用此种类型,而不是常规的 ref:value IN (SELECT primary_key FROM single_table WHERE some_expr)
      index_subquery 在 某 些 IN 查 询 中 使 用 此 种 类 型 , 与 unique_subquery 类似,但是查询的是非唯一 性索引: value IN (SELECT key_column FROM single_table WHERE some_expr)
      range 只检索给定范围的行,使用一个索引来选择 行。key 列显示使用了哪个索引。当使用=、 <>、>、>=、<、<=、IS NULL、<=>、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可 以使用 range。
      index 全表扫描,只是扫描表的时候按照索引次序 进行而不是行。主要优点就是避免了排序, 但是开销仍然非常大。
      all 最坏的情况,从头到尾全表扫描。



      说明
      possible_keys 指出 MySQL 能在该表中使用哪些索引有助于 查询。如果为空,说明没有可用的索引。


      说明
      key MySQL 实际从 possible_key 选择使用的索引。 如果为 NULL,则没有使用索引。很少的情况 下,MYSQL 会选择优化不足的索引。这种情 况下,可以在 SELECT 语句中使用 USE INDEX (indexname)来强制使用一个索引或者用 IGNORE INDEX(indexname)来强制 MYSQL 忽略索引


      说明
      key_len 使用的索引的长度。在不损失精确性的情况 下,长度越短越好。


      说明
      ref 显示索引的哪一列被使用了


      说明
      rows MYSQL 认为必须检查的用来返回请求数据的行数


      说明
      rows MYSQL 认为必须检查的用来返回请求数据的行数


      extra 中出现以下 2 项意味着 MYSQL 根本不能使用索引,效率会受到重大影响。应尽可能对此进行优化。

      extra 项 说明
      Using filesort 表示 MySQL 会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容。可能在内存或者磁盘上进行排序。MySQL 中无法利用索引完成的排序操作称为“文件排序”
      Using temporary 表示 MySQL 在对查询结果排序时使用临时表。常见于排序 order by 和分组查询 group by。

      下面来举一个例子来说明下 explain 的用法。
      先来一张表:


      CREATE TABLE IF NOT EXISTS `article` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `author_id` int(10) unsigned NOT NULL,
      `category_id` int(10) unsigned NOT NULL,
      `views` int(10) unsigned NOT NULL,
      `comments` int(10) unsigned NOT NULL,
      `title` varbinary(255) NOT NULL,
      `content` text NOT NULL,
      PRIMARY KEY (`id`)
      );

      再插几条数据:

      INSERT INTO `article`
      (`author_id`, `category_id`, `views`, `comments`, `title`, `content`) VALUES
      (1, 1, 1, 1, '1', '1'),
      (2, 2, 2, 2, '2', '2'),
      (1, 1, 3, 3, '3', '3');

      需求:
      查询 category_id 为 1 且 comments 大于 1 的情况下,views 最多的 article_id。
      先查查试试看:

      EXPLAIN
      SELECT author_id
      FROM `article`
      WHERE category_id = 1 AND comments > 1
      ORDER BY views DESC
      LIMIT 1\G

      看看部分输出结果:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: article
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 3
              Extra: Using where; Using filesort
      1 row in set (0.00 sec)

      很显然,type 是 ALL,即最坏的情况。Extra 里还出现了 Using filesort,也是最坏的情况。优化是必须的。

      嗯,那么最简单的解决方案就是加索引了。好,我们来试一试。查询的条件里即 where 之后共使用了 category_id,comments,views 三个字段。那么来一个联合索引是最简单的了。


      ALTER TABLE `article` ADD INDEX x ( `category_id` , `comments`, `views` );

      结果有了一定好转,但仍然很糟糕:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: article
               type: range
      possible_keys: x
                key: x
            key_len: 8
                ref: NULL
               rows: 1
              Extra: Using where; Using filesort
      1 row in set (0.00 sec)

      type 变成了 range,这是可以忍受的。但是 extra 里使用 Using filesort 仍是无法接受的。但是我们已经建立了索引,为啥没用呢?这是因为按照 BTree 索引的工作原理,先排序 category_id,如果遇到相同的 category_id 则再排序 comments,如果遇到相同的 comments 则再排序 views。当 comments 字段在联合索引里处于中间位置时,因comments > 1 条件是一个范围值(所谓 range),MySQL 无法利用索引再对后面的 views 部分进行检索,即 range 类型查询字段后面的索引无效。
      那么我们需要抛弃 comments,删除旧索引:

       DROP INDEX x ON article;

      然后建立新索引:

      ALTER TABLE `article` ADD INDEX y ( `category_id` , `views` ) ;

      接着再运行查询:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: article
               type: ref
      possible_keys: y
                key: y
            key_len: 4
                ref: const
               rows: 1
              Extra: Using where
      1 row in set (0.00 sec)

      可以看到,type 变为了 ref,Extra 中的 Using filesort 也消失了,结果非常理想。
      再来看一个多表查询的例子。
      首先定义 3个表 class 和 room。

      CREATE TABLE IF NOT EXISTS `class` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `card` int(10) unsigned NOT NULL,
      PRIMARY KEY (`id`)
      );
      CREATE TABLE IF NOT EXISTS `book` (
      `bookid` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `card` int(10) unsigned NOT NULL,
      PRIMARY KEY (`bookid`)
      );
      CREATE TABLE IF NOT EXISTS `phone` (
      `phoneid` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `card` int(10) unsigned NOT NULL,
      PRIMARY KEY (`phoneid`)
      ) engine = innodb;

      然后再分别插入大量数据。插入数据的php脚本:

      <?php
      $link = mysql_connect("localhost","root","870516");
      mysql_select_db("test",$link);
      for($i=0;$i<10000;$i++)
      {
          $j   = rand(1,20);
          $sql = " insert into class(card) values({$j})";
          mysql_query($sql);
      }
      for($i=0;$i<10000;$i++)
      {
          $j   = rand(1,20);
          $sql = " insert into book(card) values({$j})";
          mysql_query($sql);
      }
      for($i=0;$i<10000;$i++)
      {
          $j   = rand(1,20);
          $sql = " insert into phone(card) values({$j})";
          mysql_query($sql);
      }
      mysql_query("COMMIT");
      ?>

      然后来看一个左连接查询:

      explain select * from class left join book on class.card = book.card\G

      分析结果是:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      2 rows in set (0.00 sec)

      显然第二个 ALL 是需要我们进行优化的。
      建立个索引试试看:

      ALTER TABLE `book` ADD INDEX y ( `card`);


      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ref
      possible_keys: y
                key: y
            key_len: 4
                ref: test.class.card
               rows: 1000
              Extra:
      2 rows in set (0.00 sec)

      可以看到第二行的 type 变为了 ref,rows 也变成了 1741*18,优化比较明显。这是由左连接特性决定的。LEFT JOIN 条件用于确定如何从右表搜索行,左边一定都有,所以右边是我们的关键点,一定需要建立索引。
      删除旧索引:

      DROP INDEX y ON book;

      建立新索引。

      ALTER TABLE `class` ADD INDEX x ( `card`);

      结果

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      2 rows in set (0.00 sec)

      基本无变化。
             然后来看一个右连接查询:

      explain select * from class right join book on class.card = book.card;

      分析结果是:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ref
      possible_keys: x
                key: x
            key_len: 4
                ref: test.book.card
               rows: 1000
              Extra:
      2 rows in set (0.00 sec)

      优化较明显。这是因为 RIGHT JOIN 条件用于确定如何从左表搜索行,右边一定都有,所以左边是我们的关键点,一定需要建立索引。
      删除旧索引:

      DROP INDEX x ON class;

      建立新索引。

      ALTER TABLE `book` ADD INDEX y ( `card`);

      结果

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      2 rows in set (0.00 sec)

      基本无变化。

      最后来看看 inner join 的情况:


      explain select * from class inner join book on class.card = book.card;

      结果:

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ref
      possible_keys: x
                key: x
            key_len: 4
                ref: test.book.card
               rows: 1000
              Extra:
      2 rows in set (0.00 sec)

      删除旧索引:

      DROP INDEX y ON book;

      结果

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      2 rows in set (0.00 sec)

      建立新索引。

      ALTER TABLE `class` ADD INDEX x ( `card`);

      结果

      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      2 rows in set (0.00 sec)

      综上所述,inner join 和 left join 差不多,都需要优化右表。而 right join 需要优化左表。

      我们再来看看三表查询的例子

      添加一个新索引:


      ALTER TABLE `phone` ADD INDEX z ( `card`);
      ALTER TABLE `book` ADD INDEX y ( `card`);


      explain select * from class left join book on class.card=book.card left join phone on book.card = phone.card;


      *************************** 1. row ***************************
                 id: 1
        select_type: SIMPLE
              table: class
               type: ALL
      possible_keys: NULL
                key: NULL
            key_len: NULL
                ref: NULL
               rows: 20000
              Extra:
      *************************** 2. row ***************************
                 id: 1
        select_type: SIMPLE
              table: book
               type: ref
      possible_keys: y
                key: y
            key_len: 4
                ref: test.class.card
               rows: 1000
              Extra:
      *************************** 3. row ***************************
                 id: 1
        select_type: SIMPLE
              table: phone
               type: ref
      possible_keys: z
                key: z
            key_len: 4
                ref: test.book.card
               rows: 260
              Extra: Using index
      3 rows in set (0.00 sec)

      后 2 行的 type 都是 ref 且总 rows 优化很好,效果不错。

      MySql 中的 explain 语法可以帮助我们改写查询,优化表的结构和索引的设置,从而最大地提高查询效率。当然,在大规模数据量时,索引的建立和维护的代价也是很高的,往往需要较长的时间和较大的空间,如果在不同的列组合上建立索引,空间的开销会更大。因此索引最好设置在需要经常查询的字段中。

      以上就是本次介绍的深度学习电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:深度学习之PyTorch实战计算机视觉

      下一篇:PHP5权威编程

      展开 +

      收起 -

      下载地址:百度网盘下载
      深度学习 相关电子书
      解析卷积神经网络:深度学习实践手册
      解析卷积神经网络:深度学习实践手册 PDF 高清版

      解析卷积神经网络深度学习实践手册 从实用角度着重解析了深度学习中的一类神经网络模型卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度

      立即下载
      PyTorch深度学习实战
      PyTorch深度学习实战 PDF 超清完整版

      这本书从原理到实战、深入浅出地介绍了Facebook人工智能利器Pytorch的卓越表现,主要定位为具有一定Python编程基础,对机器学习和神经网络有一定了解的程序员们

      立即下载
      深度学习实战 2018年版 + PDF 607217版

      深度学习实战 出版时间:2018 深度学习为人工智能带来了巨大突破,也成为机器学习领域一颗闪耀的新星。虽然相关学习资料丰富,但大部分内容较为庞杂且难以理解,并对初学者的相关理论知识与实践能力有较高的要求,这使得大部分想进入这一领域的初学者望而却步。本书去繁化简地对深度学习的理论知识进行了梳理,并对算法实现做出了浅显易懂的讲解,适合初学者进行学习。结合本书的内容,读者可以快速对深度学习进行实践。通过启发式的自

      立即下载
      图解深度学习与神经网络:从张量到TensorFlow实现
      图解深度学习与神经网络:从张量到TensorFlow实现 立即下载
      MXNet深度学习实战(智能系统与技术丛书)
      MXNet深度学习实战(智能系统与技术丛书) 立即下载
      深度学习——Caffe之经典模型详解与实战
      深度学习——Caffe之经典模型详解与实战 立即下载
      读者心得
      24小时29分钟前回答

      人工智能最火编程语言 Python大战Java!

      开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢?这是一个非常重要的问题。我们在许多论坛上都有讨论过。现在,我可以提供我自己的答案并解释原因,但我们先看一些数据。毕竟,这是机器学习者和数据科学家应该做的事情:看数据,而不是看观点。 话不多说,上数据。我搜索了与“机器学习”和“数据科学”一起使用的技能,搜索选项包括编程语言Java、C、C++和JavaScript。然后还包括了Python和R,因为我们知道它在机器学习和数据科学方面很受欢迎,当然还有Scala,考虑到它与Spark的关系,再加上Julia,一些开发中认为这是“the next big thing”。运行这个查询,我们得到的数……

      119小时43分钟前回答

      python人工智能是什么意思

      python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写。python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。 人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能可以对人的意识、思维的信息过程的模拟。python可以应用在人工智能领域,但是单有Python是不能代替人工智能的。 以上就是python人工智能是什么意思的详细内容,更多请关注码农之家其它相关文章! ……

      网友NO.36540
      网友NO.36540

      AI时代到来,银行等行业传统ICT架构正发生革命性变化,存储时延大幅度降低、计算速度却快速提升。但银行网络却不够快,无法支撑这种变化。 为此,华为在近期的华为全联接大会上发布了一款利器——华为AI Fabric极速以太网方案。据悉,该方案适用于AI应用、高性能计算和分布式存储等场景,可有效缩短高达40%的HPC节点间通信时长,并相比专用网络拥有约53%的TCO(总拥有成本)优势。 而且,该方案并非刚走出实验室,而是已经在招商银行成功商用,帮助招商银行提升分行云存储约20%的IOPS性能。在重构数据面,华为与招行的联合创新,构筑智慧金融转型平台。 实际上,华为在本次HC2018上,华为轮值董事长徐直军高调发布了华为AI战略以及全栈全场景AI方案。AIFabric可以看成AI在数据中心领域的落地,代表着数据中心进入AI智能时代,也是华为网络产品线IDN(意图驱动网络)的重要支撑点。要知道,在AI时代,银行网络若想不落后,必须大幅度提升计算效率。

      码农之家

      宁安怡 提供上传

      资源
      50
      粉丝
      50
      喜欢
      119
      评论
      1

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com