news 2026/1/11 16:54:14

DAY38模型可视化与推理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY38模型可视化与推理
import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler import time import matplotlib.pyplot as plt # 设置GPU设备 device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(f"使用设备: {device}") # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 特征数据 y = iris.target # 标签数据 # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 归一化数据 scaler = MinMaxScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 将数据转换为PyTorch张量并移至GPU X_train = torch.FloatTensor(X_train).to(device) y_train = torch.LongTensor(y_train).to(device) X_test = torch.FloatTensor(X_test).to(device) y_test = torch.LongTensor(y_test).to(device) class MLP(nn.Module): def __init__(self): super(MLP, self).__init__() self.fc1 = nn.Linear(4, 10) # 输入层到隐藏层 self.relu = nn.ReLU() self.fc2 = nn.Linear(10, 3) # 隐藏层到输出层 def forward(self, x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out # 实例化模型并移至GPU model = MLP().to(device) # 分类问题使用交叉熵损失函数 criterion = nn.CrossEntropyLoss() # 使用随机梯度下降优化器 optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 num_epochs = 20000 # 训练的轮数 # 用于存储每100个epoch的损失值和对应的epoch数 losses = [] start_time = time.time() # 记录开始时间 for epoch in range(num_epochs): # 前向传播 outputs = model(X_train) # 隐式调用forward函数 loss = criterion(outputs, y_train) # 反向传播和优化 optimizer.zero_grad() #梯度清零,因为PyTorch会累积梯度,所以每次迭代需要清零,梯度累计是那种小的bitchsize模拟大的bitchsize loss.backward() # 反向传播计算梯度 optimizer.step() # 更新参数 # 记录损失值 if (epoch + 1) % 200 == 0: losses.append(loss.item()) # item()方法返回一个Python数值,loss是一个标量张量 print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') # 打印训练信息 if (epoch + 1) % 100 == 0: # range是从0开始,所以epoch+1是从当前epoch开始,每100个epoch打印一次 print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') time_all = time.time() - start_time # 计算训练时间 print(f'Training time: {time_all:.2f} seconds') # 可视化损失曲线 plt.plot(range(len(losses)), losses) plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training Loss over Epochs') plt.show()

@浙大疏锦行

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

LobeChat SDK开发计划展望:加速第三方集成

LobeChat SDK开发计划展望:加速第三方集成 在企业争相拥抱大模型的今天,一个现实问题愈发突出:如何让 AI 聊天能力快速、安全、低成本地融入现有系统?很多团队尝试从零自研聊天界面,却发现这不仅耗时耗力——UI 设计、…

作者头像 李华
网站建设 2025/12/26 0:47:28

第十六篇:Day46-48 前端安全进阶——从“漏洞防范”到“安全体系”(对标职场“攻防实战”需求)

一、前置认知:前端安全的核心价值与职场痛点在完成前端性能优化后,我们具备了打造“快且稳”产品的能力,但“安全”是产品生命线——某电商平台因XSS漏洞导致百万用户Cookie被窃取,直接造成千万级经济损失;某金融APP因…

作者头像 李华
网站建设 2026/1/4 3:45:38

如何快速批量下载播客节目:终极免费工具完整指南

想要轻松实现播客批量下载,随时随地享受离线收听体验吗?Podcast Bulk Downloader 正是你需要的解决方案!这款简单高效的播客下载工具支持通过RSS地址一键获取所有节目,无论是通勤路上还是旅行途中,都能让你畅享音频内容…

作者头像 李华
网站建设 2025/12/26 0:53:51

Shutter Encoder:视频编辑工作流的全能转换助手

Shutter Encoder:视频编辑工作流的全能转换助手 【免费下载链接】shutter-encoder A professional video compression tool accessible to all, mostly based on FFmpeg. 项目地址: https://gitcode.com/gh_mirrors/sh/shutter-encoder 还在为视频格式不兼容…

作者头像 李华
网站建设 2025/12/25 16:08:59

蓝桥云课-5. 花灯调整【算法赛】

目录 题目: 解题思路: 代码: 问题: 总结: 5.花灯调整【算法赛】 - 蓝桥云课 题目: 解题思路: 从前往后统计其后缀和,最后判断与当前位置翻转是否相同即可(偶数相当于没有翻转,奇数翻转) …

作者头像 李华