跳到主要内容

通读笔记(一):前言 + 第 1—6 章

备料阶段的原始笔记,不是拆解正文。写给后面做大纲和写正文的人看。 出处一律用「text/<文件>:<行号>(搜「短语」)」的写法,行号是清洗文本的自然段号。 第 7—11 章的笔记在 reading-notes-2.md,主线、切章建议、缺口清单、书内错误汇总都在那一份的 §15—§20。


00. 出版信息(总纲第 2 节「这是谁在什么时候写的」要用)

从 epub 的版权页读到(版权页只用于填书卡与总纲的成书背景,不作为拆解正文的出处):

书名Python深度学习及智能车竞赛实践
作者徐国艳;刘聪琳 编著
出版社机械工业出版社
出版时间2024 年 2 月(版权页未标版次)
ISBN9787111752141
字数161 千字(与我们清洗后的 161k 字符吻合)

时代坐标(从书内容推出来的,可交叉验证成书时间):

  • 书里最新的事件是 2023 年 1 月 Ultralytics 开源 YOLOV8(text/12-ch11-11-cnn.txt:147);
  • 主线赛事是 2023 年的百度智慧交通创意赛(赛题主题「长江之歌」,text/02-ch01.txt:185);
  • 提到 ChatGPT、文心一言,但只有一句话(text/02-ch01.txt:53);
  • 提到党的二十大报告(2022 年 10 月),第 5 章还拿它做词云实例(text/06-ch05.txt:297,搜「二十大报告词云生成」)。

⇒ 这是一本 2024 年初出版、内容截至 2023 年初的教材。 它写在大模型爆发之后, 但整本书站在计算机视觉 + 边缘部署这条线上,几乎不碰大模型 —— 这是它的定位,不是它的遗漏。

作者背景: 前言致谢北航研究生蔡捍、张峰(text/01-fm-preface.txt:19); 配套 MOOC 挂在中国大学 MOOC 的 BUAA(北航)课程下(:23)。 利益相关提示: 全书唯一使用的框架是百度飞桨,唯一使用的板卡是百度 EdgeBoard, 唯一使用的训练平台是百度 AI Studio,数据标注推荐百度 EasyData —— 因为这是百度冠名赛项的配套教材。这一条要在总纲里说清楚。


0. 先说三件影响全书怎么写的硬事实

0.1 这本书的代码和表格全是图片,清洗文本里一行代码都没有

原书 epub 里有 732 张图(EPUB/images/image_*.jpg)。逐段核对过: 每一处「实例 x.y」、每一张「表 x.y」、每一条语法格式,在 xhtml 里都是 <img src="../images/image_0NN.jpg">

典型现场(第 2 章 ReLU 那段):正文写「我们可以用一个简单的 if-statement 来描述这个问题:」 后面紧跟一张 image_020.jpg,然后是「编程实现如实例 2.1 所示」+ image_021.jpg。 清洗文本里这两处什么都没有,只剩前后两句话。

对拆解的后果(重要,写正文的人必须知道):

后果怎么办
引不到书里的代码我们要讲的机制自己写示范代码,并标明是我们写的,不是书里的
引不到书里的表格(操作符表、函数表、参数表)这些恰恰是「查手册就有」的部分,本来也不该抄进拆解
引不到公式的排版形式公式的文字描述大多在正文里有(如感知器的 z=w₁x₁+w₂x₂+…+b,text/05-ch04.txt:151),够用
章内小节标题、概念解释、为什么这么做 —— 这些全在正文里,完好这是我们真正要拆的东西

book-health 判 OK(161k 字,丢字率正常),图密度约 45 张/万字,远低于「图注书」的 100 张/万字门槛。 判定:能写,而且该写 —— 但要写成「概念与工程链条的拆解」,不是「代码讲义」。

0.2 这本书有两副面孔,后一副才是它的价值

  • 前 6 章(第 1—6 章,约 71k 字)是一本标准的 Python 入门教材:语法、数据类型、控制结构、 函数与类、文件与格式化。这部分任何一本 Python 教材都有,而且它最该讲清楚的代码全在图里。
  • 后 5 章(第 7—11 章,约 90k 字)是一条别处很难找的完整工程链: 从「机器学习是什么」一路走到「模型跑在一块 EdgeBoard 板卡上、车沿着赛道跑起来」。

这本书真正不可替代的是后半段。 前半段的价值不在语法本身, 而在它每个语法点都挂着一个智能车场景(电池电压检查、差速转向、赛道绘制、数据集切分), 这条线本身是可拆的。

0.3 全书是围着一场具体比赛写的

「全国大学生智能汽车竞赛 · 百度智慧交通创意组」。2023 年赛题主题是「长江之歌」, 要求用飞桨 PaddlePaddle + EdgeBoard 完成自动驾驶任务(text/02-ch01.txt:185,搜「长江之歌」)。 两个核心任务贯穿全书:自动巡航(回归)、目标检测(分类/检测)。 不知道这两个任务长什么样,后 5 章读不懂。


1. 前言(text/01-fm-preface.txt)

  • 教学目标写得很明确:「基于 Python 养成计算思维 → 能用 Python 做数据分析 → 学懂 AI → 能设计深度学习模型解决复杂工程问题」(:11,搜「养成计算思维」)。这是全书的骨架。
  • 定位是高校 + 企业合著的教材,引入「产业级工程实践项目」,并用竞赛内容串联各章知识点(:15)。
  • 配 MOOC:https://www.icourse163.org/course/BUAA-1470412177(:23)。
  • 致谢里提到北航研究生蔡捍、张峰(:19)—— 说明第一作者在北航。

读者定位:零基础的在校本科生,目标是参赛。 这决定了书里大量篇幅在讲最基础的东西。


2. 第 1 章 绪论(text/02-ch01.txt,16.8k 字)

2.1 这一章实际讲了四件不相干的事

  1. AI 三次浪潮(:23:55):计算驱动(1956—70 年代初)→ 知识驱动(70 年代初—90 年代中) → 数据驱动(90 年代中至今)。每一波的代表物:ELIZA/塞缪尔跳棋 → 专家系统 → 深蓝/AlphaGo/ChatGPT。
  2. 中国 AI 发展史五阶段(:59:103):曲折认识 → 艰难起步 → 迎来曙光 → 快速发展 → 国家战略。 这一节有大量政治性表述和政策文件罗列,占了整章约 1/3 篇幅。
  3. AI 三大流派(:127:139):符号主义 / 连接主义 / 行为主义。 —— 这一节是全章唯一对后文有承重作用的:书末尾明确说「本书主要介绍目前主流的深度学习方法, 深度学习是深层的神经网络方法」(:141),即本书站在连接主义这一支上
  4. 程序设计语言分类 + Python 特点 + 开发环境(:195:295): 低级/高级语言、编译执行/解释执行、结构化/面向对象、Python 六条特点、IDLE 与文件式/交互式。

2.2 值得记的具体点

位置备注
图灵 1936 年自动机理论、1950 年「机器能思考吗?」:21(搜「自动机理论」)书把这两件事都算作 AI 理论基础
达特茅斯会议 1956 年夏,10 人,两个月,首次使用「人工智能」一词:31(搜「达特茅斯」)发起人:麦卡锡、明斯基、罗彻斯特、香农
Hinton 2006 年论文,书写成「Learning Mul-tiple Layers of Representation」:51(搜「Hinton」)这里有个待核的缺口,见 §8
深蓝 1997 击败卡斯帕罗夫;AlphaGo 2016/2017 胜李世石、柯洁:49:51
AI 四要素:知识、数据、算法、算力:11(搜「四个要求」)后文又写成「算法、算力、算料」三要素(:55),书内口径不一致
智能驾驶核心技术:感知、决策、控制01-fm-preface.txt:9全书隐含的系统框架
Python 1991 年由 Guido van Rossum 创建:237
Python 是「混合模式」:先编成字节码,再解释执行:225(搜「中间形式的字节码」)书自己纠正了「Python 是纯解释型」的说法
前 6 章用 IDLE,第 7 章起用 Jupyter Notebook:261(搜「第7章往后」)这是全书分水岭的书内证据

2.3 判断:这一章拆解时该怎么处理

大部分是背景,只有一小块承重。

  • 三大流派必须讲(它交代了「本书为什么只讲神经网络」);
  • 三次浪潮可以压成一小节(它解释了「为什么 2006 年之后才轮到深度学习」);
  • 中国 AI 发展史那一整节 + 政策文件罗列 —— 如实说明书里有,但不展开(属于教材的思政要求, 不是技术链条的一环)。这也是「三个声音」里要标清楚的地方之一。
  • 语言分类那一节可以并进后面的 Python 章。

3. 第 2 章 Python 基本语法元素及数据类型(text/03-ch02-2-python.txt,12.4k 字)

3.1 骨架

  • IPO 程序设计法(Input-Process-Output):19:27 —— 这是书给零基础学生的第一个思维模具, 后面每个实例都按 IPO 拆。
  • 两个引子实例,都不是「Hello World」而是本行的东西:
    • 实例 2.1:ReLU 激活函数(:31:35)。书在第 2 章就把激活函数搬出来了: 「ReLU 全称为 Rectified Linear Unit……实际上是斜坡函数,即 f(x)=max(0,x)」(:33)。 这是全书最早的一处伏笔 —— 第 8 章讲神经网络时会回收。
    • 实例 2.2:智能车差速转向(:39)。转角预测值在 [-1,1] 之间,>0 右转、<0 左转; 右转就右轮减速、左轮不变。这个「[-1,1] 的转角」贯穿到第 10 章的巡航模型输出。
  • 语法元素九件(:47:151):注释、缩进、标识符、赋值、input()、print()、eval()、分支、库引用。
  • 基本数据类型(:159:313):整数/浮点/复数、字符串、字符串格式化 .format()
  • 两个内置库:math(4 常数 + 44 函数)、time。

3.2 值得记的具体点

位置
浮点数精度:print(0.1+0.2) 输出 0.30000000000000004:175(搜「0.30000000000000004」)
浮点数只保证 15 位准确,误差量级 2e-16:183(搜「0.000 000 000 000 000 2」)
字符串正反双索引:正向从 0,反向从 -1:253
切片 <string>[N:M:K],K<0 从后往前:265
eval() 的安全隐患;eval(input()) 组合:137:139
Unicode / UTF-8:Python 字符串以 Unicode 存储,中英文都算 1 个字符:273:279
中文可作标识符(智能车python智能车 都合法):81

3.3 习题里的场景(反映作者想让学生会什么)

  • 用 time 库 + 格式化输出打调试日志(日期、车速、转角、电池电压):475;
  • 车速 = 电机转速 × 轮胎周长 × 传动比,轮胎直径 2.5cm、传动比 2:1 :477

4. 第 3 章 程序控制结构(text/04-ch03.txt,9.1k 字)

4.1 骨架

流程图七元素 → 三种控制结构(顺序/分支/循环)→ if / if-else / if-elif-else → for / while / for-else / while-else / break / continue → try-except-else-finally → random 库 → turtle 库。

4.2 这一章最有价值的是它的实例来源

智能车电池电压检查贯穿 3.2 整节(实例 3.1—3.4): 镍氢电池电压范围 8—16V,而智能车微处理单元工作电压 10—13V(:53)。 书还写了这个实例的真实来历: 「2023 年智能车大赛前一晚,某学生给电池充了一整晚的电,但第二天参加比赛的时候,小车跑得出乎意料的慢」(:55)。 这是全书少有的、有具体现场的段落,拆解时值得原样用作「先现象后原理」的开头素材。

4.3 其他要点

位置
Python 3.10 起有 match...case,书明确说不讲:75(搜「match...case」)
break 只跳出最内层循环:129
for-else / while-else:只有正常结束才执行 else,被 break 打断就不执行:105:121:133
random 用梅森旋转算法,周期 2^19937-1,53 位精度,明确不适合加密:165(搜「梅森旋转」)
seed() 同种子 → 同随机序列:177
turtle 两套坐标系:绝对坐标(goto)与海龟坐标(forward/setheading):221:223
RGB 每色 0—255 或 0—1:229
实例 3.16:用 turtle 画封闭赛道:239:245 —— 第 6 章会把它改造成「读 csv 画赛道」

4.4 一处教材式的思政插入

「这就像我们每天都在进行工作和学习的循环」(:35)、 考研失败要有预案所以要学异常处理(:143)。 这是编者的价值观段落,不是技术内容,拆解时不采用,但要在「三个声音」里说清这本书有这类内容。


5. 第 4 章 函数和类(text/05-ch04.txt,10.5k 字)

5.1 骨架

代码复用与模块化设计(紧耦合/松耦合、三原则)→ 函数定义与调用、形参实参 → 五种参数(位置/关键字/默认/可变 * **)→ 返回值 → 递归(阶乘、汉诺塔)→ 局部/全局变量 + global → lambda → 单层感知器函数实现 → 面向对象(类、方法、实例变量、类变量、私有属性、__init__、继承、多继承、方法重写)→ 智能车自动巡航类单层感知器类

5.2 这一章是全书最重要的伏笔章

4.2.7「实例:单层感知器函数设计」(:137:165)把神经网络的最小单元提前到了第 4 章。 书在这里已经把话说完了:

  • 灵感来自生物神经元,图 4.4 是生物神经元与人工神经元的对比(:139:141);
  • 1957 年 Frank Rosenblatt 提出感知器,早期只有输入层和输出层,故称「单层感知器」; 它是二分类线性分类模型(:143);
  • 线性加权:z = w₁x₁ + w₂x₂ + … + b,其中 b 是偏置项(bias)(:151:155); (清洗文本里下标掉成了独立行 :153「1122」和 :157「1212」,这是排版残留,不是内容缺失)
  • 再把 z 送进激活函数 Φ(),这里 Φ() 取 sgn 函数:大于等于阈值输出 1,否则输出 -1(:159:161);
  • 实例 4.16 定义了两个函数:静活值函数 lr()激活函数 active()(:163)。 (「静活值」应是「净活值」/净输入的排版错字,原书大概率写的是净输入 net;待核)

然后 4.5 节又把同一个感知器改写成类(:271):x 和 w 是属性,lr() 和 active() 是方法。 书自己点明「实例 4.22 和实例 4.16 实现的功能完全一样,只是编程的思路转变了」。

这是全书讲得最漂亮的一处:用同一个感知器,把「函数式写法」和「面向对象写法」摆在一起对比。 拆解时这应该单独成节。

5.3 4.4 节:智能车自动巡航类 —— 数据是怎么来的

:263 交代了整个数据采集流程,这是理解第 10 章的前提:

人遥控赛车沿赛道走

车上前置摄像头拍下每个位置的照片

同时记录下此刻手动遥控的转向角度与速度

角度归一化到 [-1,1] (正=右转,负=左转,0=直行)

存成「图片名 → 转角值」的对应关系

第 5 章 5.4.4 节把它升级成字典版(同一图片多次录入就取转角平均值,06-ch05.txt:231:237)。

5.4 其他要点

位置
递归两部分:基例(不再调用自身)+ 递归链条:105
汉诺塔 64 盘,书里演示用 num=3:107:111
局部变量为组合类型且函数内未真实创建 → 直接改的是全局变量:125(实例 4.13 / 4.14 对照)
Python 的「私有属性」只是约定,外部依然可调:215
类方法第一个参数必须是 self:221
支持多继承:251
习题里要求实现位置式 PID增量式 PID:377:387 —— 增量式公式 Δu(k)=Kp[e(k)-e(k-1)]+Ki·e(k)+Kd[e(k)-2e(k-1)+e(k-2)](:389)

PID 只在习题里出现,正文一次没讲。 这是一个真实缺口: 第 10 章要控制车,书却把控制器留给了习题。见 §8。


6. 第 5 章 组合数据类型(text/06-ch05.txt,11.6k 字)

6.1 骨架

三分法:序列类型(str/tuple/list)、集合类型(set)、映射类型(dict)→ 各自的创建、索引、切片、操作函数与方法 → jieba 中文分词 → wordcloud 词云。

6.2 开篇的问题设置很好,值得照搬

:15:21 用三个真实问题引入:

  1. 给定标签集 {car, truck, bus, pedestrian, bicycle},统计每类数量;
  2. 给定一段行驶数据,统计加速状态占比;
  3. 车载摄像头一次采集多张图,批量分析。

然后对比两种方案:每个标签一个变量(a1、a2…)vs 一个结构 + 索引(a[0]、a[1]…)。 这就是「先现象后原理」的标准写法,拆解时可以直接沿用这个起手式。

6.3 要点

位置
单元素元组必须带逗号,否则 () 只是运算符:57
元组「只读」指元素不可改,元组本身可以追加/拼接:59
lt=ls 不产生新列表,只是多一个引用(改 ls[0] 会看到 lt[0] 也变):77 —— 这是最容易踩的坑
列表推导 [x*2 for x in ls1]:89
append 整体插入一个;extend 逐个追加:109
集合四则:交 & 并 `-^`
集合三大用途:成员测试、去重、删除数据项:165
字典是 Python 唯一的内建映射类型;键必须不可变:177
jieba 三种模式:精确/全/搜索引擎;原理是词库比对 + 图结构 + 动态规划求最大概率词组:245
wordcloud 本质是点图:在坐标点上画带样式的文字:273
停用词(stopwords)概念:301

6.4 一处书内错误(要如实指出)

5.6.2 节讲 wordcloud 安装,整段写的却是 jieba: 「使用 wordcloud 之前需要先安装,在命令行使用 pip install jieba/pip3 install jieba 命令自动安装。 安装完成后……输入「import jieba」测试 jieba 库是否安装成功」(:279)。 —— 这是从上一节复制粘贴没改。正确命令应是 pip install wordcloud拆解时如实写明「书这里印错了」,这正是「读完不必看原书」的价值之一。

6.5 5.4.4 节:字典版自动巡航(承上启下)

:231:237:键=图片名,值=转角列表(同一张图多次录入就都存进列表), setControl() 负责录入,getControl() 负责按图片名取出并求平均。 —— 比第 4 章的类版更进一步,是第 6 章 json 数据集的前身。


7. 第 6 章 文件和数据格式化(text/07-ch06.txt,20.5k 字,前 6 章里最长)

7.1 骨架(四大块)

文件的使用 文本文件 vs 二进制文件 → open/操作/close → 读(read/readline/readlines)
→ 写(write/writelines) → os 库 + zipfile 库 → 数据集切分

数据的格式化 一维数据(三种分隔法)→ 二维数据(csv)→ 高维数据(json)

PIL 库 Image 对象 → 格式转换 → 缩放 → 通道分离与融合 → 几何变换 → 滤波与增强

OpenCV 库 imread/imshow → 翻转/仿射/画框标注 → 色彩空间(GRAY / BGR / HSV)

这一章是前 6 章里唯一对后 5 章有直接承重作用的。 深度学习那半本书里的每一步 (读数据集、切训练/验证集、把图片变成数组、resize、通道顺序)全靠这一章打的底。

7.2 承重点一:文本文件 vs 二进制文件

  • 文本文件=基于字符编码(ASCII/Unicode 定长,UTF-8 变长);二进制文件=基于值编码(:19:21);
  • 「从本质上讲,所有的文件都是以二进制形式进行存储的」(:23);
  • 扩展名与文件格式无必然联系,改扩展名不改变格式(:17);
  • 一个具体走查:test_file.txt 里写「全国大学生智能汽车竞赛」, 文本方式打开读到可读字符,二进制方式打开读到 b'...' 字节流(:31:41)。 这条走查很干净,拆解时可以直接扩写。

7.3 承重点二:句柄指针 —— 全章最好的一处解释

:73:先 f.read(5) 读到「全国大学生」,再 f.read() 却只输出「智能汽车竞赛」, 因为指针已经移到第 5 个字符处。 接着 tell() 返回的不是 5 而是 15 —— 因为 UTF-8 下每个中文字符占 3 个字节(:77)。

这一段有具体的输入、具体的中间结果、具体的数字,是全书为数不多的现成走查。

seek(offset, whence):whence 0=开头 1=当前 2=结尾; 文本模式下只能从开头算,否则报 io.UnsupportedOperation: can't do nonzero end-relative seeks(:83)。

7.4 承重点三:「分行读入,逐行处理」

:109:113:read()/readlines() 一次性把整个文件读进内存; for line in f: 则每次只保留一行,上一次的内容被销毁。 这是全书唯一一处讲内存代价的地方,而后面处理图像数据集时这件事很要紧。

7.5 承重点四:数据集切分(6.1.7,实例 6.14)

:223 把「解压缩文件是大数据分析、机器学习的第一步」这条流水线写清楚了:

解压 zip(unzip_data())

从文件夹名/文件名里提取标签值

乱序 —— 因为「解压的数据排列大都是很规律的,相同类型的数据基本依次排列」,
不打乱会让模型泛化能力变差

按比例切分:验证集占 10%~20%(书取 10%,训练集 90%)

数据文件 Vehicle_Data.zip,从真实项目里摘的 300 个样本这四步是第 8、9 章每个项目的固定前奏,必须在拆解里讲透。

7.6 承重点五:一维/二维/高维数据

  • 数据的通用周期:存储 — 表示 — 操作(:231);
  • 一维:三种分隔法(空格、英文逗号、特殊字符),三条口径(同组文件用同种分隔符 / 分隔符不能出现在数据里 / 用英文符号)(:261:267);有序用 list,无序用 set(:269);
  • 二维:csv,「每一行对应表格中的一条数据记录」,ls[row][column] 先行后列(:285:287);
  • 高维:三维及以上统一用键-值对表示(:313),即 JSON; json 四个方法:dumps/dump 造,loads/load 解(:333); indent 控缩进,ensure_ascii=False 才能输出中文(:339);
  • 实例 6.20 的字典内容就是竞赛自动巡航数据集的一部分:键=图片编号,值=转向角度(:341)。 实例 6.21 读的 result.json 也是巡航采集数据(:343)。

7.7 承重点六:PIL 与 OpenCV(第 9—11 章的地基)

PIL:

位置
Image 是最重要的类;from PIL import Image:375
示例图 pic1.jpg = 智能车前置摄像头拍的车前道路图,640×480:379:407
png→jpg 直接 save 会报 OSError: cannot write mode RGBA as JPEG,因为 png 是 RGBA 四通道、jpg 是 RGB 三通道,要先 convert:397
resize 可以指定重采样方式(Image.LANCZOS)和放大区域:407
thumbnail 会等比缩放,所以给 (150,100) 得到的是 (133,100):415 —— 又一处带具体数字的走查
split()/merge() 分离与合并颜色通道;多图融合要求模式和大小一致:423:435
几何变换 transpose/rotate/transform:只改像素的空间位置,不改像素的值:449:451
convert() 做二值化提取车道线;ImageFilter.CONTOUR 提轮廓;ImageEnhance.Contrast 提对比度:469

OpenCV:

位置
安装名 opencv-python,导入名 cv2;依赖 numpy:481
数字图像的本质:图像切成像素,每个像素一个 0—255 的灰度值,一张灰度图=一个二维数组;彩色图=R/G/B 三个同尺寸灰度图叠起来:487 —— 全书对「图像是什么」讲得最清楚的一段,第 9 章卷积全建在它上面
PIL 是 RGB 顺序,cv2 是 BGR 顺序;两边互转要 cv2.cvtColor(..., COLOR_RGB2BGR) / Image.fromarray(...):497 —— 这是实战最容易翻车的一处
GRAY:8 位,2⁸=256 级,0 纯黑 255 纯白:509
RGB:256³=16777216 种颜色,「远高于人眼所能分辨的颜色数量」:513
HSV:A.R.Smith 1978 年提出,面向视觉感知(色调/饱和度/亮度),而 RGB 是面向硬件:517
还提到 XYZ / YCrCb / HLS:519

7.8 6.1.5 赛道自动绘制:一个漂亮的「接口」教学

:157:181:csv 单行 80,0,50,90,0.5,0.5,0.5 的七个数各有含义 —— 前进距离 / 画弧方向(1 顺 0 逆)/ 弧半径 / 弧角度 / 画笔 RGB(0—1 浮点)。 「不改代码,只改数据文件就画出不同赛道」 —— 这是书里唯一一次讲「定义数据文件格式(接口)」的思想。 拆解时值得作为「数据驱动」的引子。

顺带讲了 map():Python2 直接返回列表,Python3 返回迭代器,要 list() 包一层(:189)。


8. 前 6 章暴露出来的缺口清单(要补外部来源)

#缺口书里怎么说需要补什么
G1Hinton 2006 年论文名疑似有误书写「Learning Mul-tiple Layers of Representation」(02-ch01.txt:51)Hinton 2007 年在 Trends in Cognitive Sciences 上确有 "Learning multiple layers of representation";但 2006 年最著名的是 Science 上的 "Reducing the Dimensionality of Data with Neural Networks" 与 Neural Computation 上的 "A Fast Learning Algorithm for Deep Belief Nets"。年份与论文的对应待核
G2「深度学习之父」这个称号书直接给 Hinton(:51)通行说法是 Hinton / LeCun / Bengio 三人 2018 年共获图灵奖。书的说法要标成「书的说法」
G3AI 要素到底是三个还是四个:11 说四个(知识、数据、算法、算力),:55 说三个(算法、算力、算料)书内不一致,如实指出
G4感知器为什么会有第一次寒冬书讲了感知器(第 4 章)也讲了 AI 低谷(第 1 章),但没把两件事连起来1969 年 Minsky & Papert 的《Perceptrons》指出单层感知器解不了异或(XOR)—— 这是「为什么需要多层」的关键一环,书完全没提
G5PID 控制器只在第 4 章习题出现(05-ch04.txt:377:387),正文零讲解第 10 章要控车速与转角,PID 是绕不开的。要补一段基础解释
G6ReLU 为什么好第 2 章只给了 f(x)=max(0,x) 的定义(03-ch02-2-python.txt:33)为什么用它而不是 sigmoid(梯度消失)—— 书要到第 8 章才可能提,读第 2 章时是悬着的
G7sgn 与「静活值」05-ch04.txt:163 写「静活值函数 lr()」疑似「净活值/净输入」的排版错字。要核
G8wordcloud 安装命令印成了 jieba06-ch05.txt:279如实指出,给出正确命令
G9梅森旋转「不适用于加密目的」04-ch03.txt:165 只说结论可补一句为什么(状态可从有限输出反推),属于通用知识
G10EdgeBoard 是什么第 1 章一笔带过(02-ch01.txt:185)后 5 章的部署目标硬件,读者需要知道它是块什么板子

9. 前 6 章的伏笔账(通读才看得出的)

埋在哪收在哪
第 2 章 ReLU 定义(激活函数,03-ch02-2-python.txt:33)第 4 章感知器的 Φ()、第 8 章神经网络
第 2 章差速转向:转角 ∈ [-1,1] (:39)第 4 章巡航类、第 5 章巡航字典、第 10 章巡航模型的输出
第 3 章 turtle 画封闭赛道(实例 3.16)第 6 章「读 csv 画赛道」(实例 6.11)
第 4 章单层感知器(函数版 → 类版)第 8 章全连接神经网络
第 4 章巡航类(图片名 → 转角)第 5 章巡航字典(多次录入取均值)→ 第 6 章 json 数据集 → 第 10 章训练数据
第 6 章「图像=二维数组 / 三通道灰度图」(07-ch06.txt:487)第 9 章卷积
第 6 章数据集解压—提标签—乱序—切分四步(:223)第 8、9、10、11 章每个项目的固定前奏
第 6 章 PIL/OpenCV 的 resize、通道顺序第 10、11 章模型输入预处理

(下接 reading-notes-2.md:第 7—11 章)