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

pytorch基础

1、使用PyTorch框架创建数据集(Dataset)和数据加载器(DataLoader)的基本流程,当前模式为训练模式(非测试模式),伪代码如下:

import torch
from torch.utils.data import Dataset, DataLoadeclass MyDataset(Dataset): # 创建自定义数据集对象def __init__(self, file):self.data = ...  # 从file加载数据def __len__(self): # 返回数据集大小return len(self.data)def __getitem__(self, idx): # 根据索引返回样本return self.data[idx]# 训练阶段
dataset = MyDataset("train_data.txt")
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)for batch in dataloader:inputs, labels = batch# 训练模型...

2、pytorch 比 numpy 相比,优势在哪里:1.可以用GPU进行计算 2.方便计算梯度

在这里插入图片描述

3、接下来以一个代码为例,学习如何在 PyTorch 框架下实现的简单神经网络示例,包含数据生成、模型定义、训练和测试的完整流程:

import torch
import torch.nn as nn
import torch.optim as optim
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt# 1. 生成模拟数据
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)
X = torch.tensor(X, dtype=torch.float32)
y = torch.tensor(y, dtype=torch.float32).view(-1, 1)  # 调整为列向量# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 2. 定义神经网络模型
class NeuralNetwork(nn.Module):def __init__(self, input_size):super(NeuralNetwork, self).__init__()self.fc1 = nn.Linear(input_size, 64)  # 第一全连接层self.relu = nn.ReLU()self.fc2 = nn.Linear(64, 32)         # 第二全连接层self.fc3 = nn.Linear(32, 1)          # 输出层self.sigmoid = nn.Sigmoid()def forward(self, x):x = self.fc1(x)x = self.relu(x)x = self.fc2(x)x = self.relu(x)x = self.fc3(x)x = self.sigmoid(x)return x# 初始化模型
model = NeuralNetwork(input_size=20)# 3. 定义损失函数和优化器
criterion = nn.BCELoss()  # 二分类交叉熵损失
optimizer = optim.Adam(model.parameters(), lr=0.001)# 4. 训练模型
epochs = 100
train_losses = []
test_losses = []for epoch in range(epochs):# 训练阶段model.train()optimizer.zero_grad()outputs = model(X_train)loss = criterion(outputs, y_train)loss.backward()optimizer.step()train_losses.append(loss.item())# 测试阶段model.eval()with torch.no_grad():test_outputs = model(X_test)test_loss = criterion(test_outputs, y_test)test_losses.append(test_loss.item())if (epoch+1) % 10 == 0:print(f'Epoch [{epoch+1}/{epochs}], Train Loss: {loss.item():.4f}, Test Loss: {test_loss.item():.4f}')# 5. 绘制损失曲线
plt.plot(train_losses, label='Train Loss')
plt.plot(test_losses, label='Test Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.legend()
plt.show()# 6. 模型评估
model.eval()
with torch.no_grad():y_pred = model(X_test)y_pred_class = (y_pred > 0.5).float()accuracy = (y_pred_class == y_test).float().mean()print(f'Test Accuracy: {accuracy.item()*100:.2f}%')

在这里插入图片描述


参考视频:2022最新版-李宏毅机器学习深度学习课程

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

相关文章:

  • LabVIEW开发FPGA磁声发射应力检测系统
  • C++与Python中除法运算的区别(易错)
  • Linux路径解析指南:逻辑路径 vs 实际路径详解
  • Linux 文件系统
  • 第5章:任务间通信机制(IPC)全解析
  • 自定义 win10 命令
  • Leetcode 3269. 构建两个递增数组
  • 低空经济与新质生产力
  • SHAP分析+贝叶斯优化BP神经网络+新数据预测+K折交叉验证+相关性分析+孤立森林异常值处理,Matlab代码实现,作者:机器学习之心!
  • python36
  • 佳源科技退卷IPO:曾于2023年7月过会,原计划募资约9亿元
  • linux-du指令
  • 题目 3327: 蓝桥杯2025年第十六届省赛真题-倒水
  • python 实现从座位图中识别不同颜色和数量的座位并以JSON格式输出的功能
  • 两个mysql的maven依赖要用哪个?
  • ESP32学习笔记_Peripherals(3)——ADC
  • PyTorch 2025保姆级安装教程(Python CPU+GPU详细完整版)
  • 【第五篇】 SpringBoot中的高级配置
  • 11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南
  • 图像形态学操作-腐蚀与膨胀,开运算和闭运算(含简单代码演示)
  • 【备忘】 windows 11安装 AdGuardHome,实现开机自启,使用 DoH
  • Global Securities Markets 第二章知识点总结
  • 嵌入式硬件篇---Ne555定时器
  • 【实战教程】基于 React Flow 搭建智能体组件:从环境配置到核心节点开发指南
  • 分几个好用的系统提示词
  • Python:操作Excel水平垂直居中
  • 详解Innodb一次更新事物的执行过程
  • 使用f5-tts训练自己的模型笔记
  • 什么是总线接口
  • 基于大模型的慢性硬脑膜下血肿诊疗技术方案