当前位置: 首页 > news >正文

DAY35作业

知识点回顾:

  1. 三种不同的模型可视化方法:推荐torchinfo打印summary+权重分布可视化
  2. 进度条功能:手动和自动写法,让打印结果更加美观
  3. 推理的写法:评估模式

作业:调整模型定义时的超参数,对比下效果。

1.鸢尾花数据集(Iris dataset)是机器学习和统计学中常用的经典数据集:

基本信息

  • 样本数量:共 150 个样本。
  • 特征数量:每个样本有 4 个特征,分别为萼片长度、萼片宽度、花瓣长度、花瓣宽度 ,单位均为厘米。
  • 类别数量:包含 3 个品种类别,即山鸢尾(Setosa)、变色鸢尾(Versicolor)、维吉尼亚鸢尾(Virginica) ,每个类别有 50 个样本。

2.在神经网络中,** 隐藏层(Hidden Layer)输出层(Output Layer)** 是模型的关键组成部分,负责特征提取和结果预测

    # 初始化模型和优化器model = MLP(hidden_size=config["hidden_size"]).to(device)criterion = nn.CrossEntropyLoss()if config["optimizer"] == "SGD":optimizer = optim.SGD(model.parameters(), lr=config["lr"])elif config["optimizer"] == "Adam":optimizer = optim.Adam(model.parameters(), lr=config["lr"])losses = []  # 用于保存每个epoch的lossstart_time = time.time()with tqdm(total=num_epochs, desc="训练进度", unit="epoch") as pbar:for epoch in range(num_epochs):# 训练步骤model.train()outputs = model(X_train)loss = criterion(outputs, y_train)optimizer.zero_grad()loss.backward()optimizer.step()# 每200个epoch记录一次lossif (epoch + 1) % 200 == 0:losses.append(loss.item())pbar.set_postfix({'Loss': f'{loss.item():.4f}'})# 更新进度条if (epoch + 1) % 1000 == 0 or (epoch + 1) == num_epochs:pbar.update(1000 if (epoch + 1) % 1000 == 0 else num_epochs % 1000)# 测试准确率model.eval()with torch.no_grad():outputs = model(X_test)_, predicted = torch.max(outputs, 1)accuracy = (predicted == y_test).sum().item() / y_test.size(0)# 保存结果(确保包含losses)results.append({"config": config,"time": time.time() - start_time,"accuracy": accuracy,"final_loss": losses[-1] if losses else float('inf'),"losses": losses.copy()  # 明确保存losses的副本})# 结果对比
print("\n===== 超参数对比结果 =====")
for i, res in enumerate(results):print(f"配置{i+1}: {res['config']}")print(f"训练时间: {res['time']:.2f}s | 测试准确率: {res['accuracy']*100:.2f}% | 最终Loss: {res['final_loss']:.4f}\n")# 可视化损失曲线
plt.figure(figsize=(12, 6))
for i, res in enumerate(results):if 'losses' in res and len(res['losses']) > 0:  # 安全检查epochs_to_plot = range(0, len(res['losses']) * 200, 200)plt.plot(epochs_to_plot, res['losses'], label=f"配置{i+1}: {res['config']}")
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Training Loss Comparison')
plt.legend()
plt.grid(True)
plt.show()
当前超参数配置: {'lr': 0.01, 'hidden_size': 10, 'optimizer': 'SGD'}当前超参数配置: {'lr': 0.001, 'hidden_size': 20, 'optimizer': 'Adam'}当前超参数配置: {'lr': 0.1, 'hidden_size': 5, 'optimizer': 'SGD'}
使用设备: cuda:0当前配置: {'lr': 0.01, 'hidden_size': 10, 'optimizer': 'SGD'}
训练进度: 100%|██████████| 2000/2000 [00:06<00:00, 326.97epoch/s, Loss=0.3631]当前配置: {'lr': 0.001, 'hidden_size': 20, 'optimizer': 'Adam'}
训练进度: 100%|██████████| 2000/2000 [00:08<00:00, 231.07epoch/s, Loss=0.0601]当前配置: {'lr': 0.1, 'hidden_size': 5, 'optimizer': 'SGD'}
训练进度: 100%|██████████| 2000/2000 [00:04<00:00, 448.62epoch/s, Loss=0.0601]===== 超参数对比结果 =====
配置1: {'lr': 0.01, 'hidden_size': 10, 'optimizer': 'SGD'}
训练时间: 6.14s | 测试准确率: 93.33% | 最终Loss: 0.3631配置2: {'lr': 0.001, 'hidden_size': 20, 'optimizer': 'Adam'}
训练时间: 8.67s | 测试准确率: 96.67% | 最终Loss: 0.0601配置3: {'lr': 0.1, 'hidden_size': 5, 'optimizer': 'SGD'}
训练时间: 4.47s | 测试准确率: 96.67% | 最终Loss: 0.0601d:\anaconda\envs\DLshenduxuexi\lib\site-packages\IPython\core\pylabtools.py:152: UserWarning: Glyph 37197 (\N{CJK UNIFIED IDEOGRAPH-914D}) missing from current font.fig.canvas.print_figure(bytes_io, **kw)
d:\anaconda\envs\DLshenduxuexi\lib\site-packages\IPython\core\pylabtools.py:152: UserWarning: Glyph 32622 (\N{CJK UNIFIED IDEOGRAPH-7F6E}) missing from current font.fig.canvas.print_figure(bytes_io, **kw)

@浙大疏锦行

http://www.xdnf.cn/news/644707.html

相关文章:

  • AI 赋能心理健康预测与干预:智能技术如何成为情绪“守护者”
  • 【分库分表】理论基础
  • Python训练营打卡Day36
  • YOLO11解决方案之区域追踪探索
  • Python二级考试
  • SOC-ESP32S3部分:12-1、任务通信-队列
  • 类和对象简要小记
  • 大模型应用开发之RAG
  • 【python】OOP编程从0到1
  • 前端常见的安全问题
  • 【监控】Node Exporter 介绍及应用
  • QT6安装与概念介绍
  • 30字速成Docker安装与配置指南
  • 【Web前端】ECMAScript 6基础学习
  • HTTP协议版本的发展(HTTP/0.9、1.0、1.1、2、3)
  • MySQL并发事务问题及隔离级别演示
  • 蓝桥杯单片机答题技巧
  • DNS 入门篇
  • Arduino Uno KY-037声音传感器实验
  • 短视频矩阵系统源码部署分享
  • 维护测试监控LLM应用
  • 从厨房到储物间:Grocy 家庭的智能物资管理助手
  • CA自签名证书创建--证书链生成脚本
  • dify-plugin-daemon的.env配置文件
  • 大模型和AI工具汇总(一)
  • CMake学习笔记(六)可以在CMake的function中修改function函数体之外的变量值吗?
  • 【FastAPI】--进阶教程1
  • VS2022 安装CodeGeeX AI插件实现高效编程体验
  • 贪心算法应用:贝尔曼-福特松弛问题详解
  • 差分数组知识笔记