当前位置: 首页 > 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.rkmt.cn/news/94781.html

相关文章:

  • 探索含光伏、火电与飞轮储能系统的奇妙调频之旅
  • 高效获取高质量外链:2026年必须掌握的10个核心策略
  • Flutter国际化(i18n)实现详解
  • YOLOv13涨点改进 | 独家创新首发、Conv卷积改进篇 | SCI一区 2025 | 引入MSConvStar多尺度卷积星形模块,有效增强捕捉多范围特征,助力目标检测、图像分割、图像分类高效涨点
  • LLC谐振变换器恒压恒流双竞争闭环Simulink仿真探索
  • Feign基本知识
  • YOLOv13涨点改进 | 全网独家创新、Neck特征融合改进篇 | TGRS 2025顶刊 | 引入ADSF自适应特征融合模块,自适应融合浅层特征与深层特征,适合红外小目标检测、图像分割等有效涨点
  • 常用软件工具的使用(1) ---- git 的安装和基础操作
  • 双电机纯电动汽车整车仿真模型,基于Matlab/Simulink的双电机前后轴双驱电动汽车仿真模型
  • 测试 - 概览
  • 鸿蒙不是 Electron!深度解析 HarmonyOS 应用开发与跨端技术选型
  • 12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺,电...
  • LangChain从入门到进阶(7):学会让AI调用MCP「喂饭教程」
  • C++ 后端面试必刷大厂算法题(附代码实现)第一期
  • qt为什么转向用cmake放弃qmake
  • color
  • Qwen3-Embedding-4B:重新定义多语言文本检索的边界
  • 深度探究Span:.NET内存布局与零拷贝原理及实践
  • NNG 开源项目教程
  • helm 部署 elasticsearch 栈
  • 14、深入解析 Oracle Enterprise Manager 安装与配置
  • 手把手拆解10/100M以太网PHY设计:从PLL到均衡器的实战代码分析
  • 原神,启动!
  • 终极指南:Qwen3-30B-A3B多GPU分布式推理完整解决方案
  • 快速排序(Quick Sort)的“死穴”
  • 云屋音视频 SDK 凭何成为信创技术困局的 “破局者”?
  • 25、技术探索:数据查询、服务器管理与Python包管理
  • Day 38 - Dataset 和 DataLoader
  • Ansoft ANSYS Maxwell 有限元仿真:无线电能传输WPT、磁耦合谐振、多相多绕...
  • 【Spring框架】SpringMVC基本原理与配置