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

python学习day33

知识点回顾:
1.PyTorch和cuda的安装
2.查看显卡信息的命令行命令(cmd中使用)
3.cuda的检查
4.简单神经网络的流程
a.数据预处理(归一化、转换成张量)
b.模型的定义
i.继承nn.Module类
ii.定义每一个层
iii.定义前向传播流程
c.定义损失函数和优化器
d.定义训练流程
e.可视化loss过程

数据准备部分

预处理补充:
注意事项:
1. 分类任务中,若标签是整数(如 0/1/2 类别),需转为long类型(对应 PyTorch 的torch.long),否则交叉熵损失函数会报错。
2.回归任务中,标签需转为float类型(如torch.float32)。

#数据的准备
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
import torch#数据的加载
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, X_test.shape)
print(y_train.shape, y_test.shape)#归一化数据,深度学习对数据敏感
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)#数据转为张量
X_train = torch.FloatTensor(X_train)
X_test = torch.FloatTensor(X_test)
y_train = torch.LongTensor(y_train)
y_test = torch.LongTensor(y_test)

神经网络定义部分

import torch    #导入PyTorch
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) #第一层全连接层(输入到隐藏),输入维度为4,输出维度为10self.relu  = nn.ReLU()  #激活函数self.fc2 = nn.Linear(10, 3)   #第二层全连接层(隐藏到输出),输入维度为10,输出维度为3# 输出层不需要激活函数,因为后面会用到交叉熵函数cross_entropy,交叉熵函数内部有softmax函数,会把输出转化为概率def forward(self, x):       #前向传播函数out = self.fc1(x)       #输入层out = self.relu(out)    #激活函数out = self.fc2(out)     #输出层return out
#实例化模型
model = MLP()

训练部分

#模型训练(CPU)
#定义损失函数和优化器#分类问题用交叉熵损失函数
criterion = nn.CrossEntropyLoss()#随机梯度下降
optimizer = optim.SGD(model.parameters(), lr=0.01)#训练模型
num_epochs= 20000 #训练轮数#存储epoch损失值
losses = []for epoch in range(num_epochs):#前向传播outputs = model.forward(X_train) #显式调用forward函数# outputs = model(X_train)  # 常见写法隐式调用forward函数,其实是用了model类的__call__方法loss = criterion(outputs, y_train) #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}")

 

结果可视化

#可视化结果
import matplotlib.pyplot as plt#可视化曲线
plt.plot(range(num_epochs), losses) #绘制损失函数曲线
plt.xlabel("epochs")
plt.ylabel("losses")
plt.title("losses vs epochs")
plt.show()

@浙大疏锦行

http://www.xdnf.cn/news/9942.html

相关文章:

  • SpringBoot WebMvcConfigurer使用Jackson统一序列化格式化输出
  • DDP与FSDP:分布式训练技术全解析
  • python常用库-pandas、Hugging Face的datasets库(大模型之JSONL(JSON Lines))
  • EasyRTC嵌入式音视频通信SDK助力1v1实时音视频通话全场景应用
  • 图解gpt之Transformer架构与设计原理
  • ONNX模型的动态和静态量化
  • 2024 CKA模拟系统制作 | Step-By-Step | 17、题目搭建-排查故障节点
  • 因泰立科技:镭眸T51激光雷达,打造智能门控新生态
  • 立控信息智能装备柜:科技赋能军队装备管理现代化
  • WindowServer2022下docker方式安装dify步骤
  • 大厂前端研发岗位设计的30道Webpack面试题及解析
  • CAD多边形密堆积2D插件
  • SpringBoot+Vue+微信小程序校园自助打印系统
  • Spring Boot 基础知识全面解析:快速构建企业级应用的核心指南
  • 用Git管理你的服务器配置文件与自动化脚本:版本控制、变更追溯、团队协作与安全回滚的运维之道
  • 服务器Docker容器创建与VScode远程连接SSH使用
  • quasar electron mode如何打包无边框桌面应用程序
  • 从零到一:我的技术博客导航(持续更新)
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的企业组织生态化重构研究
  • 展会聚焦丨漫途科技亮相2025西北水务博览会!
  • AI生态警报:MCP协议风险与应对指南(中)——MCP Server运行时安全​​
  • 循环神经网络(RNN)全面教程:从原理到实践
  • 神经网络-Day40
  • 目标检测学习
  • Day 40
  • 一篇文章玩转CAP原理
  • methods的实现原理
  • 熵最小化Entropy Minimization (一): 基本认识
  • 解析楼宇自控系统:分布式结构的核心特点与优势展现
  • Visual studio 中.sln/.vcxproj/.vcxproj.filters和.vcxproj.user文件的作用