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

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()

@浙大疏锦行

http://www.gsyq.cn/news/112466.html

相关文章:

  • LobeChat代码注释自动生成实践
  • Radm1n1ster Adv.Math thinking class chapter6
  • Copilot的Plan模式到底好在哪?
  • 深入探索 WebHID:Web 标准下的硬件交互实现
  • 合同条款审查:LobeChat标记潜在风险点
  • 脱口秀段子生成:LobeChat玩转中文谐音梗
  • WordPress跨平台兼容OA系统word上传需求
  • LobeChat待办事项提取与提醒功能实现
  • 真正厉害的销售,都摸透了人性!
  • FEMM软件下载与安装
  • NPP 热带森林:墨西哥查梅拉,1982-1995 年,R1
  • Xbox 360手柄在macOS上的终极适配指南:360Controller驱动完美解决方案
  • WordPress导入MathType公式保留矢量格式
  • AI 工具实战测评:从技术性能到场景落地的全方位解析
  • 【Hadoop+Spark+python毕设】网络安全入侵数据可视化分析系统、计算机毕业设计、包括数据爬取、数据分析、数据可视化、实战教学
  • Python 列表(List)详解
  • 巴菲特的投资时间管理
  • A.每日一题——3562. 折扣价交易股票的最大利润
  • 13、Linux文件系统挂载与检查全攻略
  • Git 分支管理
  • TradingView图表库深度解析:实时数据流与K线生成实战指南
  • 14、Linux 系统中光盘刻录与文件系统创建指南
  • 用户投诉处理指南:LobeChat建议妥善回应
  • 阴阳师自动化脚本深度使用指南:从智能辅助到效率提升的完整解析
  • 《Ionic 侧栏菜单》
  • Dolby Atmos Lite:轻量级全景声音效模拟工具,多设备音效增强方案
  • LobeChat多语言支持现状与国际化适配方案
  • BetterNCM插件:网易云音乐终极增强方案
  • 实验(三)
  • 18、Mozilla开发中的命名规范与模块化编程