当前位置: 首页 > 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.jsqmd.com/news/84562/

相关文章:

  • 力扣hot100:搜索插入位置
  • 探索含光伏、火电与飞轮储能系统的奇妙调频之旅
  • 高效获取高质量外链:2026年必须掌握的10个核心策略
  • Flutter国际化(i18n)实现详解
  • 【高可用系统监控的设计原则与实践】
  • 基于 STM32 的太阳能 MPPT 充电控制器设计
  • 30分钟掌握Semgrep:代码安全检查从入门到精通
  • YOLOv13涨点改进 | 独家创新首发、Conv卷积改进篇 | SCI一区 2025 | 引入MSConvStar多尺度卷积星形模块,有效增强捕捉多范围特征,助力目标检测、图像分割、图像分类高效涨点
  • LLC谐振变换器恒压恒流双竞争闭环Simulink仿真探索
  • YOLOv13涨点改进 | 全网独家创新、Neck特征融合改进篇 | TGRS 2025顶刊 | 引入ADSF自适应特征融合模块,自适应融合浅层特征与深层特征,适合红外小目标检测、图像分割等有效涨点
  • 折叠与影像:高端手机技术演进的两大方向
  • Feign基本知识
  • 每天一个假设-day5:如何提高测试人员和开发人员的协作效率
  • 常用软件工具的使用(1) ---- git 的安装和基础操作
  • 视觉色选机:如何挑选技术可靠与服务完善的设备厂家
  • YOLOv11涨点改进 | 全网独家创新、Neck特征融合改进篇 | TGRS 2025顶刊 | 引入ADSF自适应特征融合模块,自适应融合浅层特征与深层特征,适合红外小目标检测、图像分割等有效涨点
  • 北京婚介的狂妄红娘:我在她的嘲讽中找到了幸福
  • 双电机纯电动汽车整车仿真模型,基于Matlab/Simulink的双电机前后轴双驱电动汽车仿真模型
  • 【JavaWeb】ServletConfig为Servlet提供配置参数
  • Linux编程网络基础
  • 含SOP配电网重构 关键词:配网重构 yalmip 二阶锥 参考文档:《二阶锥松弛在配电网最优...
  • C++中多态
  • 【每日一读Day9】传统搜索引擎会消失吗?LLM?
  • Labview模拟温度检测报警系统 1、通过设定上下限温度,通过比较温度来到达指示灯的闪烁情况
  • 岐金兰洞见:落地之障,在认知范式,不在技术路径
  • STM32学习_新建工程
  • 测试 - 单元测试(JUnit)
  • Flutter 测试驱动开发的基本流程
  • 二、在freertos中对应esp01s模块的ap模式下的通信测试。
  • 测试 - 概览