当前位置:实例文章 » 其他实例» [文章]Pytorch学习笔记(1)

Pytorch学习笔记(1)

发布人:shili8 发布时间:2025-01-11 08:43 阅读次数:0

**PyTorch学习笔记(1)**

**前言**

PyTorch是目前最流行的深度学习框架之一,尤其是在研究和开发中。作为一个新手,我花了很多时间学习和实践PyTorch,希望通过这篇笔记分享我的经验和知识,让更多的人能够快速上手。

**环境准备**

首先,我们需要安装PyTorch和相关的依赖包。可以使用以下命令进行安装:

bashpip install torch torchvision


**基本概念**

### 张量(Tensor)

在PyTorch中,张量是最基本的数据结构。它可以看作是一个多维数组,可以包含数字、字符串等类型的数据。

import torch# 创建一个1x2的张量tensor = torch.tensor([[1,2], [3,4]])
print(tensor)


### 张量运算PyTorch提供了丰富的张量运算功能,包括加法、减法、乘法等基本运算,以及矩阵乘法、求和等高级运算。

import torch# 创建两个1x2的张量tensor1 = torch.tensor([[1,2], [3,4]])
tensor2 = torch.tensor([[5,6], [7,8]])

# 张量加法result = tensor1 + tensor2print(result)

# 张量乘法result = tensor1 * tensor2print(result)


### autogradautograd是PyTorch中一个非常重要的模块,它负责自动计算张量的梯度。这个功能对于训练神经网络至关重要。

import torch# 创建一个1x2的张量tensor = torch.tensor([1,2], requires_grad=True)

# 张量加法result = tensor +2# 计算结果的梯度result.backward()
print(tensor.grad)


### ModuleModule是PyTorch中一个非常重要的类,它代表了一个神经网络模型。通过继承这个类,我们可以定义自己的神经网络结构。

import torch.nn as nnclass Net(nn.Module):
 def __init__(self):
 super(Net, self).__init__()
 self.fc1 = nn.Linear(5,3)
 self.fc2 = nn.Linear(3,2)

 def forward(self, x):
 x = torch.relu(self.fc1(x))
 x = self.fc2(x)
 return xnet = Net()
print(net)


### OptimizerOptimizer是PyTorch中一个非常重要的类,它负责更新神经网络模型的参数。通过继承这个类,我们可以定义自己的优化器。

import torch.optim as optimclass MyOptimizer(optim.Optimizer):
 def __init__(self, params, lr):
 super(MyOptimizer, self).__init__(params, lr)

 def step(self):
 for group in self.param_groups:
 for p in group['params']:
 if p.grad is None: continue grad = p.grad.data if grad.is_sparse:
 raise RuntimeError('sparse gradients are not supported')
 d_p = grad * group['lr']
 p.data.add_(d_p, _stack_tensor([0.1,0.2]))

optimizer = MyOptimizer(net.parameters(), lr=0.01)
print(optimizer)


### DataLoaderDataLoader是PyTorch中一个非常重要的类,它负责加载数据集。通过继承这个类,我们可以定义自己的数据加载器。

import torch.utils.data as dataclass MyDataset(data.Dataset):
 def __init__(self, data, labels):
 self.data = data self.labels = labels def __getitem__(self, index):
 return self.data[index], self.labels[index]

 def __len__(self):
 return len(self.data)

dataset = MyDataset([1,2,3], [4,5,6])
dataloader = data.DataLoader(dataset, batch_size=2)
print(dataloader)


### TrainerTrainer是PyTorch中一个非常重要的类,它负责训练神经网络模型。通过继承这个类,我们可以定义自己的训练器。

import torch.optim as optimclass MyTrainer:
 def __init__(self, model, optimizer):
 self.model = model self.optimizer = optimizer def train(self, data_loader):
 for batch in data_loader:
 inputs, labels = batch outputs = self.model(inputs)
 loss = torch.nn.CrossEntropyLoss()(outputs, labels)
 self.optimizer.zero_grad()
 loss.backward()
 self.optimizer.step()

trainer = MyTrainer(net, optimizer)
print(trainer)


### EvaluationEvaluation是PyTorch中一个非常重要的模块,它负责评估神经网络模型的性能。通过使用这个模块,我们可以计算准确率、精度等指标。

import torch.nn as nnclass Net(nn.Module):
 def __init__(self):
 super(Net, self).__init__()
 self.fc1 = nn.Linear(5,3)
 self.fc2 = nn.Linear(3,2)

 def forward(self, x):
 x = torch.relu(self.fc1(x))
 x = self.fc2(x)
 return xnet = Net()

# 创建一个数据加载器dataset = MyDataset([1,2,3], [4,5,6])
dataloader = data.DataLoader(dataset, batch_size=2)

# 创建一个评估器evaluator = nn.CrossEntropyLoss()
trainer = MyTrainer(net, optimizer)

# 进行评估for batch in dataloader:
 inputs, labels = batch outputs = net(inputs)
 loss = evaluator(outputs, labels)
 print(loss.item())


### VisualizationVisualization是PyTorch中一个非常重要的模块,它负责可视化神经网络模型的结构和性能。通过使用这个模块,我们可以绘制图表、散点图等。

import matplotlib.pyplot as plt# 创建一个数据加载器dataset = MyDataset([1,2,3], [4,5,6])
dataloader = data.DataLoader(dataset, batch_size=2)

# 进行可视化for batch in dataloader:
 inputs, labels = batch plt.scatter(inputs.numpy(), labels.numpy())
plt.show()


**总结**

本文介绍了PyTorch的基本概念、张量运算、autograd、Module、Optimizer、DataLoader、Trainer等模块。通过这些模块,我们可以定义自己的神经网络模型并进行训练和评估。同时,通过使用Visualization模块,我们可以可视化神经网络模型的结构和性能。

**参考**

* PyTorch官方文档: PyTorch教程: />* PyTorch示例代码:

相关标签:笔记
其他信息

其他资源

Top