pytorch中一些最基本函数和类

1.Tensor操作

Tensor是PyTorch中最基本的数据结构,类似于NumPy的数组,但可以在GPU上运行加速计算。

示例:创建和操作Tensor

python 复制代码
import torch

# 创建一个零填充的Tensor
x = torch.zeros(3, 3)
print(x)

# 加法操作
y = torch.ones(3, 3)
z = x + y
print(z)

# 在GPU上创建Tensor
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = torch.zeros(3, 3, device=device)
print(x)
运行结果:

2. nn.Module和自定义模型

nn.Module是PyTorch中定义神经网络模型的基类,所有的自定义模型都应该继承自它。

示例:定义一个简单的全连接神经网络模型

python 复制代码
import torch
import torch.nn as nn

# 自定义模型类
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc = nn.Linear(10, 5)  # 线性层:输入维度为10,输出维度为5
        
    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例
model = SimpleNet()
print(model)
运行结果:

3. DataLoader和Dataset

DataLoader用于批量加载数据,Dataset定义了数据集的接口,自定义数据集需继承自它。

示例:加载自定义数据集

python 复制代码
import torch
from torch.utils.data import Dataset, DataLoader

# 自定义数据集类
class CustomDataset(Dataset):
    def __init__(self, data, targets):
        self.data = data
        self.targets = targets
        
    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, index):
        x = self.data[index]
        y = self.targets[index]
        return x, y

# 假设有一些数据和标签
data = torch.randn(100, 10)  # 100个样本,每个样本10维
targets = torch.randint(0, 2, (100,))  # 100个随机标签,0或1

# 创建数据集实例
dataset = CustomDataset(data, targets)

# 创建数据加载器
batch_size = 10
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 打印一个batch的数据
for batch in dataloader:
    inputs, labels = batch
    print(inputs.shape, labels.shape)
    break
运行结果:

4. 优化器和损失函数

优化器用于更新模型参数以减少损失,损失函数用于计算预测值与实际值之间的差异。

示例:使用优化器和损失函数

python 复制代码
import torch
import torch.nn as nn
import torch.optim as optim

# 定义模型(假设已定义好)
model = SimpleNet()

# 定义损失函数
criterion = nn.CrossEntropyLoss()

# 定义优化器
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 前向传播、损失计算、反向传播和优化过程请参考前面完整示例的训练循环部分。
运行结果:

5. nn.functional中的函数

nn.functional提供了各种用于构建神经网络的函数,如激活函数、池化操作等。

示例:使用ReLU激活函数

python 复制代码
import torch
import torch.nn.functional as F

# 创建一个Tensor
x = torch.randn(3, 3)

# 使用ReLU激活函数
output = F.relu(x)
print(output)
运行结果:
相关推荐
skywalk81632 分钟前
用WorkBuddy成功把Deepseek Harness移植到FreeBSD
人工智能·deepseek·harness
JavaPub-rodert3 分钟前
我把 OpenAI 协议塞进了 Go 工具库:go-commons 开始支持 AI 了
开发语言·人工智能·golang
HZZD_HZZD5 分钟前
非侵入式负荷监测选`Seq2Point`还是`LSTM`?合众致达实测:洗衣机分解F1达0.87、`NDE`误差降27%,附PyTorch完整实现
人工智能·pytorch·lstm
青 春 记 忆7 分钟前
零基础入门python07:让程序记住数据——JSON文件和异常处理
开发语言·windows·python·json·python3.11
嘟哩DuliDuli10 分钟前
AI 账单变高的技术原因:重复上下文和用量归属
android·人工智能·安全·ai·软件工程
Tom·Ge11 分钟前
AI创业者通识日报 | 2026年8月13日
人工智能·大模型·ai创业·ai创业者
tech讯息13 分钟前
企业 AI 办公平台如何标准化落地?哪些云方案适配企业统一部署?—— 优先评估统一工作台、权限管控与系统集成能力
人工智能
清水白石00817 分钟前
Python 如何设计一个线程安全的缓存?从锁策略、LRU 到工程化实战
python·安全·缓存
qq_225891746621 分钟前
基于Flask的城市地铁客流量数据预测系统设计与实现
后端·python·flask
IT_陈寒24 分钟前
搞不定JavaScript的数组去重?你可能漏了这两个坑
前端·人工智能·后端