news 2026/4/15 16:54:31

ADVANCE Day28

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ADVANCE Day28

@浙大疏锦行

📘 Day 28 实战作业:面向对象编程 (OOP) —— 深度学习的基石

1. 作业综述

核心目标
从“面向过程”(写流水账代码)进化到“面向对象”(设计模块化代码)。
在深度学习中,一切皆对象。所有的神经网络模型本质上都是一个类 (Class),它们继承自 PyTorch 的基类,拥有自己的属性(层)和方法(前向传播)。

涉及知识点

  • 类的定义:class,__init__(构造函数),self(实例本身)。
  • 继承 (Inheritance): 子类继承父类的能力,是代码复用的神器。
  • Super 函数:super().__init__(),在子类中扩展父类的初始化逻辑。

场景类比

  • 类 (Class):图纸(如“汽车设计图”)。
  • 对象 (Object):实物(如“这辆红色的特斯拉”)。
  • 继承:“跑车”继承自“汽车”,自动拥有了轮子和引擎,但跑得更快。

步骤 1:定义你的第一个类 (Blueprint)

场景描述
我们来模拟定义一个最基础的“模型”类。
所有的模型都有名字,都能进行预测。

任务

  1. 定义一个类BaseModel
  2. __init__中初始化属性model_name
  3. 定义一个方法predict(data),打印 “正在使用 [模型名] 预测数据…”。
  4. 实例化:用它创建一个名为 “ChatGPT” 的对象,并调用predict
# 1. 定义类 (图纸)classBaseModel:def__init__(self,name):""" 构造函数:每次创建新对象时自动调用 self: 代表"这个对象自己" """self.model_name=name# 将传入的名字存到对象属性里print(f"🏗️ 模型 [{self.model_name}] 初始化完成!")defpredict(self,data):""" 定义一个方法(动作) """print(f"🤖 [{self.model_name}] 正在预测数据:{data}")return"Prediction_Result"# 2. 实例化 (造出实物)# 创建一个叫 "GPT-4" 的模型对象my_model=BaseModel("GPT-4")# 3. 调用方法# 注意:调用时不需要传 self,Python 会自动处理my_model.predict("今天天气怎么样?")# 4. 访问属性print(f"当前模型名称属性:{my_model.model_name}")
🏗️ 模型 [GPT-4] 初始化完成! 🤖 [GPT-4] 正在预测数据: 今天天气怎么样? 当前模型名称属性: GPT-4

步骤 2:继承的力量 (Inheritance)

场景描述
现在我们需要一个更具体的“分类模型”。
它也是模型,所以应该拥有BaseModel的所有能力(如名字、预测功能),但它还有自己独特的功能(如输出类别概率)。
我们不需要重新写一遍代码,只需要让它继承BaseModel

任务

  1. 定义Classifier类,继承自BaseModel
  2. 重写 (Override)predict方法,让它输出具体的分类结果。
  3. 实例化Classifier,验证它是否既有父类的属性,又有子类的新方法。
# 定义子类 Classifier,括号里写父类名字classClassifier(BaseModel):defpredict(self,data):""" 子类重写了父类的 predict 方法 """print(f"🔍 [{self.model_name}] 正在进行分类分析:{data}")return{"Class":"Dog","Probability":0.98}defevaluate(self):""" 子类特有的新方法 """print(f"📊 [{self.model_name}] 准确率评估中...")# --- 测试继承 ---# 创建一个分类模型对象cls_model=Classifier("ResNet-50")# 调用重写后的方法result=cls_model.predict("一张狗的照片.jpg")print(f"输出结果:{result}")# 调用子类特有方法cls_model.evaluate()# 验证继承关系print(f"它是 BaseModel 的子类吗?{issubclass(Classifier,BaseModel)}")
🏗️ 模型 [ResNet-50] 初始化完成! 🔍 [ResNet-50] 正在进行分类分析: 一张狗的照片.jpg 输出结果: {'Class': 'Dog', 'Probability': 0.98} 📊 [ResNet-50] 准确率评估中... 它是 BaseModel 的子类吗? True

步骤 3:Super 函数 (The Upgrade)

场景描述
这是深度学习中最常见的写法!
子类在初始化时,不仅要设置自己的新属性(比如分类数num_classes),还要保留父类的初始化逻辑(比如设置model_name)。
这时就需要用super().__init__(...)来“召唤”父类的构造函数。

任务

  1. 修改Classifier__init__方法。
  2. 接收namenum_classes两个参数。
  3. 使用super().__init__(name)自动处理名字,然后手动处理num_classes
classAdvancedClassifier(BaseModel):def__init__(self,name,num_classes):# 1. 先通过 super() 调用父类的初始化,把 name 传给它处理# 这样我们就不用重写 self.model_name = name 了super().__init__(name)# 2. 再处理子类独有的属性self.num_classes=num_classesprint(f"✨ 高级配置: 支持{self.num_classes}分类")definfo(self):print(f"模型:{self.model_name}| 类别数:{self.num_classes}")# --- 测试 Super ---# 实例化yolo=AdvancedClassifier("YOLO-v8",80)# 调用yolo.info()yolo.predict("街景图.jpg")# 依然可以使用父类或重写的方法
🏗️ 模型 [YOLO-v8] 初始化完成! ✨ 高级配置: 支持 80 分类 模型: YOLO-v8 | 类别数: 80 🤖 [YOLO-v8] 正在预测数据: 街景图.jpg 'Prediction_Result'

🎓 Day 28 总结:通往 PyTorch 的最后一块拼图

今天我们掌握了 Python 的Class(类)机制。
至此,你已经具备了看懂 PyTorch 核心代码的能力。

深度学习对照表

今天的代码PyTorch 中的代码
class Classifier(BaseModel):class MyNet(nn.Module):
def __init__(self, ...):定义网络层 (卷积层, 全连接层)
super().__init__(name)super(MyNet, self).__init__()(标准化起手式)
def predict(self, data):def forward(self, x):(前向传播)

Next Level: Python 基础特训圆满结束!接下来的几天,我们将把前面 28 天的所有积木(Pandas, 绘图, 函数, 类, 异常处理)组合起来,去攻克最终的大型项目!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 23:09:16

从零部署Open-AutoGLM:手把手教你构建专属评价自动回复引擎,

第一章:从零认识Open-AutoGLM与电商评价自动回复在电商业务快速发展的今天,用户评价的响应效率直接影响客户满意度。Open-AutoGLM 是一个开源的轻量级自然语言生成框架,专为自动化文本回复场景设计,尤其适用于电商平台中对用户评论…

作者头像 李华
网站建设 2026/4/12 10:12:07

降重降AIGC :宏智树AI重新定义学术审查,让你的研究“安全”发声

在学术的舞台上,真正的挑战或许并非思想本身,而是让思想通过那日益严苛的“安检”时,依然保持其纯粹与响亮。 深夜,屏幕的冷光映照着一张焦虑的脸。手指悬停在“查重”按钮上,迟迟不敢落下。这不再是关于抄袭的恐惧&am…

作者头像 李华
网站建设 2026/4/15 3:04:24

LangFlow镜像社区版发布:开源共建AI开发新生态

LangFlow镜像社区版发布:开源共建AI开发新生态 在大模型技术席卷各行各业的今天,越来越多开发者希望快速构建属于自己的智能应用——从客服机器人到知识问答系统,从自动化报告生成到个性化推荐引擎。然而现实是,LangChain 虽然功能…

作者头像 李华
网站建设 2026/4/15 16:09:13

Open-AutoGLM优惠券策略优化(从规则引擎到深度学习的跃迁)

第一章:Open-AutoGLM 电商优惠券发放自动化在现代电商平台中,精准且高效的优惠券发放机制对提升用户转化率和复购率至关重要。Open-AutoGLM 是一个基于生成式语言模型的自动化决策框架,能够结合用户行为数据动态生成个性化的优惠券发放策略。…

作者头像 李华
网站建设 2026/4/15 16:09:13

DeepSeek+Dify全攻略,轻松实现智能工作流,2026年必备技能!

在AI技术快速发展的今天,DeepSeek凭借其强大的推理能力正成为普通人提升效率的重要工具。结合Dify这一零代码AI应用开发平台,即使没有编程基础的用户也能轻松构建属于自己的智能助手。本文将详细介绍如何利用这两大工具搭建知识库、聊天助手、智能体和工…

作者头像 李华