背景:
学校的一个实践作业,要求自主建立模型,运用人工智能跟深度学习,根据训练集训练,最后输入一张猫猫图片,让模型判断是否含有猫猫。
1.完成学校的任务
这个项目属于人工智能范畴下的深度学习实践,具体聚焦计算机视觉中的图像分类任务。学校提供了200张标注猫猫数据集(猫/非猫各100张,含宿舍实拍、网络图片),独立实现二分类检测系统。除此以外,禁止调用ResNet等预训练模型或高级封装API,需手写核心逻辑。
核心材料是,学校提供了一个深度学习的简单py文件。代码量不少,但是函数不多,结构很清晰。当时我已经有一定的深度学习基础(我之前有跟导师聊过,导师说我迟早会接触深度学习,叫我预先自学了),不过这是我第一次接触深度学习的实际应用。

看过代码以后,我选择将代码一段一段标上注释,分段去上网使用ai来搞清楚什么意思,同时补充这部分结构在人工智能应用里的基础知识。
最后结果如下:
示例代码流程:数据加载→模型定义→训练循环→准确率输出→单图预测。


2.自发的进一步探索
我并没有满足于完成学校的任务。通过这次机会,我切实获得了使用人工智能跟深度学习进行实践的经验。我抱着“既然搞清楚了一整个项目的流程和结构,不如自己从头做一个”的想法,尝试自己做一个模型来超越之前的那一个。
完成学校要求的基线模型后(一个严格按作业规范实现的单层感知机),我发现它的识别效果仅略高于随机猜测水平(约50%出头)——输入一张清晰的猫图,模型依然频繁误判。我产生强烈好奇:“为什么深度学习能解决图像问题?它到底‘深’在哪里?”
第一步:尝试CNN(TensorFlow)
我首先尝试了卷积神经网络。当时查阅资料时看到“CNN专为图像设计”,便用TensorFlow/Keras动手搭建了一个轻量结构:包含两个卷积层搭配池化层,后接全连接层。训练过程中,我特意用Matplotlib可视化中间层输出,第一次清晰看到特征从边缘轮廓逐渐演化为猫耳朵、毛发纹理的完整路径。模型效果显著优于学校基线,对模糊或侧脸猫图的判断也明显更可靠,这让我直观理解了“层次化特征提取”的价值。
第二步:尝试MLP(TensorFlow)
接着,我想验证“单纯增加隐藏层能否提升效果”。于是用TensorFlow实现了一个两层的多层感知机(MLP),在输入和输出间增加了一个隐藏层,其他训练条件与之前保持一致。结果模型效果确实比学校单层模型有提升,但与CNN相比仍有明显差距。这让我切实体会到:图像数据具有空间结构特性,卷积操作对局部特征的捕捉能力,远胜于全连接层的简单堆叠。
第三步:用PyTorch复现CNN
后来,出于对PyTorch框架的好奇(久闻其动态图调试友好),我用PyTorch完整复现了相同的CNN结构。过程中重点对比了两种框架的体验:PyTorch修改网络后能即时查看张量变化,调试过程更直观流畅;而TensorFlow在流程封装上更简洁。最终两个版本的效果基本一致,微小波动属于正常实验误差。这次尝试让我明白:框架本质是工具,选择应服务于开发效率与具体场景,而非技术偏好。
3.我的收获:
这段探索带给我的成长远超代码本身。当特征图清晰呈现猫耳朵轮廓时,书本理论瞬间有了温度;当MLP与CNN效果差异摆在眼前时,“结构决定能力”不再是一句空话。它教会我三件事:技术方案必须匹配问题本质,亲手验证胜过道听途说,保持对工具的开放心态比掌握单一技术更重要。也正是从这次“听说CNN好用→动手验证→理解原理”的完整闭环开始,我真正建立了对人工智能领域的兴趣与信心,也养成了此后面对任何技术问题时“先问本质,再选工具”的思维习惯。