


-
神经元要和上一层所有神经元连接,就是全连接层。
- 用生活中的例子来理解
假设你要预测一套房子的价格(输出)。
你收集了 4 个特征(输入):面积、卧室数、楼层、房龄。
现在,你找了一个包含 100 个专家(神经元) 的评估团队(隐藏层)来帮你估价。
这 100 个专家,不需要 100 个不同的特征。他们每个人都会把这 4 个特征全都看一遍,只是每个人看重的点不一样:
专家 1 特别看重面积,不太在乎楼层。
专家 2 特别在乎房龄,觉得面积无所谓。
专家 3 喜欢高楼层,不喜欢老房子。
...
专家 100 有自己独特的权重组合。
每个专家(神经元)都会把 4 个特征分别乘上自己心里的"权重",然后加起来(加权求和),再经过激活函数,得出他个人的打分(输出值)。
所以,100 个神经元,最后会输出 100 个值。这 100 个值,就是这 100 个专家对这套房子的综合评估意见。
- 用生活中的例子来理解

-
在传统的机器学习里,如果让计算机认猫,人类得手动告诉它:"你看,有胡须、有尖耳朵、有毛,这就是猫。"这叫人工特征工程。
而深度学习(就是图里这个黑框)最大的革命,就是让机器自己去找特征。也就是图里写的"算法提取特征"。你给它几万张猫的图,它自己去总结"尖耳朵"长什么样。那文本、声音、图片怎么变成张量?
这就是《Python深度学习》这本书后面要讲的核心"魔法"------向量化(Vectorization)。图片:这个你刚才已经见过了。一张 28×28 的手写数字图,其实就是一个由 0~255 的整数(灰度值)组成的矩阵。彩色图片就是三个 0~255 的矩阵(RGB红绿蓝),组合成一个 3D 张量。
文本(文字):这是你在第6章要学的。机器不认识汉字或英文。我们要先把词变成字典里的"编号"(比如"猫"是 1,"狗"是 2),然后再把这个编号变成数字向量。比如用 one-hot 编码,或者用词嵌入(Embedding)把它变成一堆浮点数。
声音:把声波切成无数个小段,记录每一段的频率和振幅,变成数字。
分类标签:比如你要分辨猫和狗。你会把"猫"变成数字 0,"狗"变成数字 1。如果是 10 分类,就变成你刚才敲代码用的 to_categorical(比如数字 3 变成 [0,0,0,1,0,0,0,0,0,0])。
一句话总结:一切输入,皆可化为数字矩阵。
线性 = 死板,只能画直线。(普通的加权求和)
非线性 = 灵活,能画任意曲线。(激活函数带来的拐角)
这时候,relu 激活函数闪亮登场。
relu 的规则是:
y=max
(0,x)
y=max(0,x)(正数保持不变,负数全变成 0)。你发现了吗?它在
x=0
x=0 的地方,"折断"了!当 x>0
x>0 时,它是一条向上走的直线。当 x<0
x<0 时,它死死贴着地面,变成平的。它不再是一根直直的线了,它是一个有拐角的折线。这就叫非线性。





打个比方总结:
NumPy = 一辆只能跑市区道路(CPU)的手动挡汽车。
Torch = 一辆默认在市区(CPU)跑,但只要你按一下按钮(.cuda()),它就能长出翅膀飞上天(GPU)的变形金刚,而且它还内置了一个自动驾驶仪(自动求导)。
所以,以后如果你自己写 PyTorch 代码,一定要记住:创建了张量,如果不写 .cuda() 或 .to(device),它就不在 GPU 上!

- 张量默认类型是float32.