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

python打卡day35@浙大疏锦行

知识点回顾:

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

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

 1. 模型可视化方法

①使用torchinfo打印summary

from torchinfo import summarymodel = SimpleNN()
summary(model, input_size=(1, 784))  # 输入尺寸

②权重分布可视化

import matplotlib.pyplot as plt# 可视化第一层权重
plt.hist(model.fc1.weight.data.numpy().flatten(), bins=50)
plt.title('FC1 Weight Distribution')
plt.show()

 2. 进度条功能

①手动写法

from tqdm import tqdmfor epoch in range(10):with tqdm(train_loader, desc=f'Epoch {epoch}') as pbar:for data, target in pbar:# ...训练代码...pbar.set_postfix(loss=loss.item())

②自动写法

from torch.utils.tensorboard import SummaryWriterwriter = SummaryWriter()
for epoch in range(10):for i, (data, target) in enumerate(train_loader):# ...训练代码...writer.add_scalar('Loss/train', loss.item(), epoch*len(train_loader)+i)

③推理写法

model.eval()  # 切换到评估模式
with torch.no_grad():  # 禁用梯度计算correct = 0for data, target in test_loader:output = model(data)pred = output.argmax(dim=1)correct += (pred == target).sum().item()accuracy = correct / len(test_loader.dataset)print(f'Test Accuracy: {accuracy:.2%}')

 作业:超参数调整对比

1.模型定义示例(带超参数)

class SimpleNN(nn.Module):def __init__(self, hidden_size=128, dropout_rate=0.2):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(784, hidden_size)self.dropout = nn.Dropout(dropout_rate)self.fc2 = nn.Linear(hidden_size, 10)def forward(self, x):x = x.view(-1, 784)x = F.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x

2.超参数对比实验

hidden_sizes = [64, 128, 256]
dropout_rates = [0.0, 0.2, 0.5]for h_size in hidden_sizes:for d_rate in dropout_rates:model = SimpleNN(hidden_size=h_size, dropout_rate=d_rate)# ...训练和评估代码...print(f'Hidden: {h_size}, Dropout: {d_rate}, Acc: {accuracy:.2%}')

关键点:

1. 评估时一定要用 model.eval() 和 torch.no_grad()
2. 进度条推荐使用tqdm或tensorboard
3. 超参数调整要系统性地对比(如网格搜索)
4. 可视化有助于理解模型行为

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

相关文章:

  • 【笔记】OpenCV的学习(未完)
  • CodeBuddy 实现图片转素描手绘工具
  • springboot中各模块间实现bean之间互相调用(service以及自定义的bean)
  • 符合Python风格的对象(使用 __slots__ 类属性节省空间)
  • 搜索二叉树
  • 开盘啦 APP 抓包 逆向分析
  • 从有线到无线:PLC通讯“剪断“最后一根线!
  • MQTT-排它订阅
  • STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板
  • python训练营第33天
  • Lesson 22 A glass envelope
  • HJ14 字符串排序【牛客网】
  • Spring AI 源码解析:Tool Calling链路调用流程及示例
  • 从法律视角看债务管理:湖北理元理律师事务所的实践探索
  • 【信息系统项目管理师】一文掌握高项常考题型-成本类计算
  • 巡礼中国西极·跨越昆仑天山 | 北斗卫星徽章护航昆仑科考
  • 神经算子项目实战:数据分析、可视化与实现全过程
  • 归一化 超全总结!!
  • leetcode hot100刷题日记——16.全排列
  • 探秘Transformer系列之(34)--- 量化基础
  • 开源轻量级语音合成和语音克隆模型:OuteTTS-1.0-0.6B
  • AWTK嵌入式图形框架开发备忘(二)
  • 【GESP真题解析】第 5 集 GESP 二级 2023 年 3 月编程题 2:百鸡问题
  • 【Python】【电网规划】基于经济与可靠性双目标的混合配电系统规划及可靠性评估
  • ShenNiusModularity项目源码学习(30:ShenNius.Admin.Mvc项目分析-15)
  • 可增添功能的鼠标右键优化工具
  • 【PINN】DeepXDE学习训练营(33)——pinn_forward-fractional_Poisson_1d.py
  • C++:共享指针unique_ptr的理解与应用
  • 每日定投40刀BTC(17)20250511 - 20250524
  • 什么是数据分析