马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是再次为你提供的一个详细的PyTorch使用教程:
一、安装PyTorch
- 情况准备
- 确保体系已安装符合版本的Python(推荐3.10及以上)。
- 安装方式
- CPU版本
- 对于Linux和macOS:
- 使用下令 pip install torch torchvision torchaudio。
- 对于Windows:
- 先处置惩罚好依赖项,然后使用类似的pip下令安装。
- GPU版本(依赖于CUDA)
- 依据CUDA版本在官网查找对应下令。例如,若CUDA为12.4:
- 实行 conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.4 -c pytorch -c nvidia。
二、PyTorch底子概念
- 张量(Tensors)
- 核心数据结构,类似NumPy数组且可在GPU加速计算。
- 创建方式
- 从列表创建:
- 示例:
- import torch
- my_list = [1, 2, 3]
- tensor = torch.tensor(my_list)
- 创建随机张量:
- 例如:random_tensor = torch.randn(3, 3)(创建3x3随机正态分布张量)。
- 计算图与自动微分
- 计算基于构建计算图,利用张量时自动构建。
- 示例:
- 计算 y = x^2 + 3x 的梯度。
- x = torch.tensor([2.0], requires_grad = True)
- y = x ** 2+3 * x
- y.backward()
- print(x.grad)
三、创建神经网络模型
- 界说网络结构
- 使用 nn.Module 类。
- 示例(全连接神经网络):
- import torch.nn as nn
- class MyNet(nn.Module):
- def __init__(self):
- super(MyNet, self).__init__()
- self.fc1 = nn.Linear(10, 5)
- self.fc2 = nn.Linear(5, 1)
- def forward(self, x):
- x = torch.relu(self.fc1(x))
- x = self.fc2(x)
- return x
复制代码
- 模型初始化与参数检察
- 初始化:model = MyNet()
- 参数检察:
- for name, param in model.named_parameters():
- print(name, param.size())
复制代码
四、数据处置惩罚
- 数据加载
- 使用 DataLoader 类,需先创建数据集类(继续 torch.utils.data.Dataset)。
- 示例:
- from torch.utils.data import Dataset, DataLoader
- class MyDataset(Dataset):
- def __init__(self):
- self.data = torch.randn(100, 10)
- self.labels = torch.randint(0, 2, (100,))
- def __getitem__(self, index):
- return self.data[index], self.labels[index]
- def __len__(self):
- return len(self.data)
- dataset = MyDataset()
- dataloader = DataLoader(dataset, batch_size = 10, shuffle = True)
复制代码
- 数据预处置惩罚
- 以图像数据为例,使用 torchvision.transforms。
- 示例:
- import torchvision.transforms as transforms
- transform = transforms.Compose([
- transforms.ToTensor(),
- transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
- ])
复制代码
五、训练模型
- 界说损失函数和优化器
- 损失函数
- 例如回归题目用均方误差(MSE):criterion = nn.MSELoss()
- 优化器
- 如随机梯度下降(SGD):optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
- 训练循环
- 多轮训练:
- num_epochs = 10
- for epoch in range(num_epochs):
- for batch_data, batch_labels in dataloader:
- optimizer.zero_grad()
- outputs = model(batch_data)
- loss = criterion(outputs, batch_labels)
- loss.backward()
- optimizer.step()
- print(f'Epoch {epoch + 1}, Loss: {loss.item()}')
复制代码
六、模型评估与猜测
- 模型评估
- 以分类题目计算准确率为例:
- correct = 0
- total = 0
- with torch.no_grad():
- for batch_data, batch_labels in dataloader:
- outputs = model(batch_data)
- _, predicted = torch.max(outputs.data, 1)
- total += batch_labels.size(0)
- correct += (predicted == batch_labels).sum().item()
- accuracy = correct / total
- print(f'Accuracy: {accuracy}')
复制代码
- 猜测新数据
- 示例:
- new_data = torch.randn(1, 10)
- with torch.no_grad():
- prediction = model(new_data)
- print(f'Prediction: {prediction}')
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |