CNN 入门教学
面向深度学习新手的 PyTorch 基础入门代码环境,可直接运行学习。
⬇️ 下载原始 Jupyter Notebook (.ipynb) 文件
🚀 在线运行 (Google Colab)🧠 小白科普:到底什么是 CNN?
很多同学听到**CNN(卷积神经网络,Convolutional Neural Network)**可能会觉得很高深,其实它的原理非常像我们人类“认东西”的过程。
想象一下:你面前有一张“猫”的照片。你是怎么认出这是一只猫的?
- 你不会一次性去死记硬背照片里的每一个像素点。
- 你会先看局部特征:尖尖的耳朵、圆圆的瞳孔、几根胡须……
- 当这些特征组合在一起时,你的大脑就会得出结论:“这是一只猫!”

👆 电脑眼里的猫是一堆由红(R)、绿(G)、蓝(B)构成的数字矩阵。为了能让卷积层(放大镜)完美地扫描最边缘的特征不漏掉数据,我们通常会在矩阵的最外围补上一圈“0”(即图中的 pad 边界)。
CNN 就是在模仿这个过程。只不过在我们组的电生理实验里,它并不是用来看“图片”,而是用来看我们的“一维电波信号”!
提取波峰特征
压缩冗余数据
预测正常/病变
核心概念通俗解释
为了看懂代码,你只需要了解 CNN 的三大核心组件(配合动图食用,风味更佳):
1. 🔍 卷积层 (Convolution Layer) —— “找特征的放大镜”
9
👆 放大镜滑过中间的数据段 [5, 9, 2],匹配上了它要找的“中间突起”规律,算出了一个高分 9。
你可以把卷积层想象成一个沿着你的信号从左到右滑动的放大镜(特征提取器/卷积核)。 就像上面的图解一样,这个放大镜每次盖住一小块区域,然后对这块区域进行乘法计算。它专门负责寻找“这里有没有它认识的零件?”。比如在电生理信号里,它滑动时可能就是在找:“这里有没有一个突然向上的尖峰(P波/R波等)?”或者“这里有没有一个小幅度的震荡?”。
2. 🗜️ 池化层 (Pooling Layer) —— “抓大放小的压缩机”
👆 在每两个相邻的数据中,只保留了最强的信号(8和12),数据量瞬间减半!
经过放大镜扫描后,我们得出了很大一张“特征图”。但数据太多了计算太慢咋办? 池化层的作用就是保留最明显的特征,把冗余的信息扔掉。比如上面这张图展示的“最大池化(Max Pooling)”,它的意思是:在相邻的一小段波形里,我只挑那个数字最大、波动最厉害、信号最强的特征记录下来,其它的直接扔掉。这不仅能巨幅减少计算量,还能防止模型死记硬背(防止过拟合)。
3. ⚖️ 全连接层 (Fully Connected Layer) —— “做最后决定的法官”
综合各项得分
👆 最后,“法官”综合了前面提取出来的所有线索,给出了最终预测的分类结果。
当波形经过前面的“放大镜”搜集零件、又被“压缩机”提炼精华后,多层的特征会被拉直传递,所有的关键线索(有没有尖峰、频段范围等)都会送到最右侧的“全连接层”。 这里就像是一群法官在投票:“由于我看到了前面发现的特征组合,所以我打赌这段信号属于异常类!”最后它会输出一个概率(比如 90% 概率是心率不齐,10% 概率是正常信号)。
💡 为什么组里爱用 CNN 处理实验信号?
相比于传统的提取特征(比如你要自己写代码去算峰值幅度、频率、斜率),CNN 能自己“学会”该看什么特征。只要你喂给它的数据够多,并且告诉它答案是什么,它就能变成一个超级熟练的信号分类专家!
去上面的在线链接里跑跑代码吧,感受一下它是怎么一步步分析数据的!