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

Day 37 MLP神经网络的训练

@浙大疏锦行

1.cuda 的检查

import torch torch.cuda if torch.cuda.is_available(): print("CUDA可用!") device_count = torch.cuda.device_count() print(f"可用的CUDA设备数量:{device_count}") current_device = torch.cuda.current_device() print(f"当前使用的CUDA设备索引:{current_device}") device_name = torch.cuda.get_device_name(current_device) print(f"当前CUDA设备的名称:{device_name}") cuda_version = torch.version.cuda print(f"CUDA版本:{cuda_version}") else: print("CUDA不可用。")

2.简单神经网络的流程

a.数据预处理

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np 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) print(X_train.shape) print(y_train.shape) print(X_test.shape) print(y_test.shape) from sklearn.preprocessiong import MinMaxScaler scaler = MinMaxScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) X_train = torch.FloatTensor(X_train) y_train = torch.LongTensor(y_train) X_test = torch.FloatTensor(X_test) y_test = torch.LongTensor(y_test)

b.模型的定义

i.继承nn.Module类

ii.定义每一个层

iii.定义前向传播流程

import torch import torch.nn as nn import torch.optim as optim 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 model = MLP()

c.定义损失函数和优化器

criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), 1r=0.01)

d.定义训练流程

num_epochs = 20000 losses = [] for epoch in range(num_epochs): outputs = model.forward(X_train) loss = criterison(outputs,y_train) optimizer.zero_grad() loss.backward() optimizer.step() losses.append(loss.item()) if(epoch + 1) % 100 == 0: print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f})

e.可视化loss过程

import matplotlib.pyplot as plt plt.plot(range(num_epochs),losses) plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training Loss over Epochs') plt.show()
http://www.gsyq.cn/news/94781.html

相关文章:

  • 【高可用系统监控的设计原则与实践】
  • 每天一个假设-day5:如何提高测试人员和开发人员的协作效率
  • 视觉色选机:如何挑选技术可靠与服务完善的设备厂家
  • 含SOP配电网重构 关键词:配网重构 yalmip 二阶锥 参考文档:《二阶锥松弛在配电网最优...
  • Labview模拟温度检测报警系统 1、通过设定上下限温度,通过比较温度来到达指示灯的闪烁情况
  • 岐金兰洞见:落地之障,在认知范式,不在技术路径
  • Flutter 测试驱动开发的基本流程
  • Qt关闭主窗体与quit()的深度解析
  • Qt主窗体关闭与quit()的退出机制差异
  • Ubuntu下Qt/C++程序终止全攻略
  • 前期工作总结
  • 智乃的数字【牛客tracker 每日一题】
  • [UUCTF 2022 新生赛]ezpop
  • GitHub中文排行榜终极指南:新手快速发现优质开源项目的完整教程
  • MAUI跨平台云同步终极指南:轻松实现多设备数据无缝流动
  • 3分钟快速上手:WhiteSur主题打造macOS风格Linux桌面完整指南
  • 24
  • GPT-5如何通过新框架减少30%政治偏见
  • 光伏三相并网仿真 模型内容: 1.光伏+MPPT控制+两级式并网逆变器(boost+三相桥式逆...
  • elastic/kibana 升级问题
  • 15、Linux系统管理实用指南
  • 腾讯混元语音驱动数字人技术:重塑动态视频生成新范式
  • SAP业财一体化实现的“隐形桥梁”-价值串
  • 25、技术探索:Google App Engine、Zenoss与Python包管理
  • 5分钟掌握AI驱动飞船设计:用智能参数优化打造专属星际舰队
  • 高中数学
  • 中国独立开发者创业实战指南:从技术到商业的变现路径
  • eHR品牌TOP5年度榜单公布!HR系统/HR管理系统市场主流公司推荐 - 全局中转站
  • 32、Django Web 应用开发实战指南
  • 24、Python在多操作系统及云计算环境中的应用