欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Pytorch基本语法

Pytorch基本语法

2025/7/4 19:21:39 来源:https://blog.csdn.net/qq_51626500/article/details/144869398  浏览:    关键词:Pytorch基本语法

PyTorch 是一个开源的机器学习库,它不仅提供了灵活的张量计算能力(类似NumPy),还拥有强大的自动微分功能,特别适合构建和训练神经网络。本文将带领您一步步了解PyTorch的基本语法和操作,帮助您快速入门。

1. 安装 PyTorch

在开始之前,请确保已经安装了PyTorch。您可以根据自己的环境选择合适的安装命令。以下是通过pip安装CPU版本PyTorch的示例:

pip install torch torchvision torchaudio

如果您需要GPU支持,则可以根据官方文档选择相应的安装方式。

2. 张量 (Tensor)

张量是PyTorch中的核心数据结构,类似于NumPy的数组,但具有更丰富的功能。下面是一些创建张量的方法:

  • 从数据创建张量
import torch# 创建一个包含[5.5, 3]的张量
x = torch.tensor([5.5, 3])
print(x)
  • 随机初始化
# 创建一个形状为(3, 3)的随机张量
x = torch.rand(3, 3)
print(x)
  • 全零或全一初始化
# 创建一个全零张量
x = torch.zeros(2, 2)
print(x)# 创建一个全一张量
y = torch.ones(2, 2)
print(y)
  • 从现有张量创建新张量
# 创建一个与x相同形状和类型的全零张量
z = torch.zeros_like(x)
print(z)

3. 张量操作

PyTorch提供了大量的张量操作函数,包括加减乘除、矩阵乘法、转置等。这里介绍一些常用的操作:

  • 加法
# 元素级别的加法
result = x + y
print(result)# 或者使用in-place操作
y.add_(x)
print(y)
  • 矩阵乘法
# 矩阵乘法
result = torch.mm(x, y)
print(result)
  • 广播机制

当两个张量的形状不同时,PyTorch会自动应用广播规则来匹配它们的形状:

# 广播机制下的加法
x = torch.tensor([[1, 2], [3, 4]])
y = torch.tensor([10, 20])
result = x + y
print(result)

4. 自动求导 (Autograd)

自动求导是PyTorch的一大特色,它允许我们轻松地计算梯度,这对于训练神经网络至关重要。

  • 启用自动求导
# 创建一个需要计算梯度的张量
x = torch.ones(2, 2, requires_grad=True)
print(x)
  • 执行向后传播
# 定义一个简单的计算图
y = x + 2
z = y * y * 3
out = z.mean()# 反向传播
out.backward()
print(x.grad)  # 输出x的梯度

5. 构建神经网络

使用torch.nn模块可以方便地定义和训练神经网络。下面是一个简单的例子:

import torch.nn as nn
import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net, self).__init__()# 定义卷积层self.conv1 = nn.Conv2d(1, 6, 3)self.conv2 = nn.Conv2d(6, 16, 3)# 定义全连接层self.fc1 = nn.Linear(16 * 6 * 6, 120)  self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):# 卷积层 -> 激活函数 -> 池化层x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))x = F.max_pool2d(F.relu(self.conv2(x)), 2)x = x.view(-1, self.num_flat_features(x))x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return xdef num_flat_features(self, x):size = x.size()[1:]  # 所有维度除了批次大小num_features = 1for s in size:num_features *= sreturn num_featuresnet = Net()
print(net)

结语

随着深入学习,您将会发现更多高级特性和应用场景。希望这篇文章能够为您提供一个良好的起点,激发您探索深度学习世界的兴趣。如果有任何问题或需要进一步的帮助,请随时留言讨论!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词