详细介绍pytorch重要的API

devtools/2024/9/23 0:03:51/

文章目录

      • 1. Tensor(张量)
        • 创建 Tensor
        • 操作 Tensor
      • 2. Autograd(自动求导)
      • 3. nn.Module(神经网络模块)
      • 4. Optimizer(优化器)
      • 5. Loss Function(损失函数)
      • 6. DataLoader(数据加载器)
      • 7. torchvision(视觉工具包)
        • 数据集
        • 模型
        • 图像转换
      • 8. torch.nn.functional(函数式接口)
      • 9. torch.utils.data(数据工具)
        • Dataset
        • DataLoader
      • 10. torch.cuda(GPU 支持)


1. Tensor(张量)

Tensor 是 PyTorch 中最基本的数据结构,提供了多种创建和操作张量的函数。

创建 Tensor
python">import torch# 创建一个 Tensor
x = torch.tensor([1.0, 2.0, 3.0])# 从 NumPy 数组创建 Tensor
import numpy as np
np_array = np.array([1.0, 2.0, 3.0])
x = torch.from_numpy(np_array)# 创建全零或全一 Tensor
x = torch.zeros(3, 4)
x = torch.ones(3, 4)# 创建随机 Tensor
x = torch.randn(3, 4)
操作 Tensor
python"># 基本操作
x = torch.tensor([1.0, 2.0, 3.0])
y = x + 2
z = x * y# 索引和切片
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(x[0, 1])  # 输出 2
print(x[:, 1])  # 输出 tensor([2, 5])

2. Autograd(自动求导)

Autograd 提供了自动求导功能,可以跟踪 Tensor 上的操作并计算梯度。

python"># 创建一个需要求导的 Tensor
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x * 2
y.backward(torch.tensor([1.0, 1.0, 1.0]))
print(x.grad)  # 输出梯度

3. nn.Module(神经网络模块)

nn.Module 是构建神经网络的基础类,提供了定义网络层和前向传播的方法。

python">import torch.nn as nn
import torch.nn.functional as Fclass SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(10, 20)self.fc2 = nn.Linear(20, 1)def forward(self, x):x = F.relu(self.fc1(x))x = self.fc2(x)return xmodel = SimpleNN()

4. Optimizer(优化器)

优化器用于更新神经网络的参数,提供了多种优化算法。

python">import torch.optim as optimmodel = SimpleNN()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 优化步骤
optimizer.zero_grad()  # 清空梯度
loss = compute_loss(model, data)  # 计算损失
loss.backward()  # 反向传播
optimizer.step()  # 更新参数

5. Loss Function(损失函数)

损失函数用于衡量模型预测值与真实值之间的差异,提供了多种损失函数。

python">criterion = nn.MSELoss()# 计算损失
output = model(data)
loss = criterion(output, target)

6. DataLoader(数据加载器)

DataLoader 用于加载数据集,并提供批量加载、数据打乱等功能。

python">from torch.utils.data import DataLoader
from torchvision import datasets, transformstransform = transforms.Compose([transforms.ToTensor()])
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)# 迭代数据
for images, labels in train_loader:# 训练代码pass

7. torchvision(视觉工具包)

torchvision 提供了常用的数据集、模型架构和图像转换工具。

数据集
python">from torchvision import datasetstrain_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
模型
python">from torchvision import models# 加载预训练的 ResNet-50 模型
model = models.resnet50(pretrained=True)
图像转换
python">from torchvision import transformstransform = transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

8. torch.nn.functional(函数式接口)

torch.nn.functional 提供了一些常用的函数式操作,如激活函数、损失函数等。

python">import torch.nn.functional as Fx = torch.randn(10)
y = F.relu(x)

9. torch.utils.data(数据工具)

torch.utils.data 提供了数据加载和预处理的工具,包括 DatasetDataLoader

Dataset
python">from torch.utils.data import Datasetclass CustomDataset(Dataset):def __init__(self, data, targets):self.data = dataself.targets = targetsdef __getitem__(self, index):return self.data[index], self.targets[index]def __len__(self):return len(self.data)
DataLoader
python">from torch.utils.data import DataLoaderdata = torch.randn(100, 10)
targets = torch.randint(0, 2, (100,))
dataset = CustomDataset(data, targets)
dataloader = DataLoader(dataset, batch_size=16, shuffle=True)

10. torch.cuda(GPU 支持)

torch.cuda 提供了 GPU 计算的支持,包括设备管理、内存管理等。

python">device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)# 将数据移动到 GPU
images, labels = images.to(device), labels.to(device)

http://www.ppmy.cn/devtools/96294.html

相关文章

李沐老师动手深度学习pytorch版本的读取fashion_mnist数据并用AlexNet模型训练,其中修改为利用本地的数据集训练

李沐老师的d2l.load_data_fashion_mnist里面没有root参数,所以只会下载,不能利用本地的fashion_mnist数据。所以我使用torchvision 的datasets里面FashionMNIST方法,又由于李沐老师此处是利用AlexNet模型来训练fashion_mnist数据,…

期货的种类之什么是股指期货的类型?

期货可以分为商品期权和股指期货,商品期货的标的物主要是现货,而股指期货的标的物主要是指数。简单来说,就是一种基于股票指数未来的价格变动来进行交易的金融衍生品。它的全称是“股票价格指数期货”,英文简称SPIF。 股指期货怎…

大模型基于指令的知识编辑:InstructEdit技术

人工智能咨询培训老师叶梓 转载标明出处 在知识更新和编辑方面,大模型在特定任务上表现出色,但在面对不同任务时往往力不从心,需要为每个任务单独设计编辑器,这在一定程度上限制了其应用范围。为了解决这一问题,浙江大…

python-素数回文(赛氪OJ)

[题目描述] 现在给出一个素数,这个素数满足两点: 1、 只由 1∼9 组成,并且每个数只出现一次,如 13,23,1289 。 2、 位数从高到低为递减或递增,如 2459,87631 。 请你判断一下,这个素数的回文数是否为素数&a…

C语言日常练习 Day17

目录 一、找出一个二维数组的鞍点 二、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中的英文大写字母、小写字母、数字、空格以及其他字符的个数 三、有一行电文,已按下面规律编译成密码:A->Z,a->z,B->Y,…

uniapp--微信小程序无网络提示组件页面

uniapp–微信小程序无网络提示组件页面 1.组件页面fu-notwork.vue代码 <template><view class"fu-notwork" v-if"!isConnected"><view class"fu-count-df" v-if"mode full" :style"{ zIndex: zIndex }"&g…

华为APP审核,权限说明弹窗

工具类 import android.app.Activity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextV…

Qt登录窗口设计

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> //图标类 #include <QPushButton> #include <QLineEdit> //行编辑 #include <QLabel> #include <QTextEdit> #include <QMovie>class Widge…