前言
Torch是一个科学计算框架,广泛支持将GPU放在首位的机器学习算法。
PyTorch是一个基于Torch的python机器学习库,底层由 C++ 实现。
PyTorch 主要有两大特征:
类似于 NumPy 的张量计算,能在 GPU 或 MPS 等硬件加速器上加速。
基于带自动微分系统的深度神经网络。
安装Pytorch
有conda和pip两种安装方式,参考Previous PyTorch Versions根据使用版本安装,Wheel表示使用pip安装,Conda表示使用conda安装,OSX和Linux and Windows表示操作系统。注意在镜像源下载的是cpu版本,必须在官网安装,检查代码如下
import torch print(torch.__version__) # 检查Pytorch的版本 print(torch.cuda.is_available()) # 检查当前环境能否使用CUDA若
torch.cuda.is_available()返回false,解决方法参考torch.cuda.is_available()返回false——解决办法
基础
张量(Tensor)
张量可以视为多维数组。
张量可以运行在不同设备上,比如CPU和GPU,可以将张量移动到 GPU 上加速计算。
张量支持自动微分。
详细介绍可以参考PyTorch 张量(Tensor) | 菜鸟教程
out.backward() # 反向传播,计算梯度 print(x.grad) # 查看 x 的梯度nn.Module
我们可以继承 nn.Module 类来构建神经网络模型。
import torch.nn as nn import torch.optim as optim # 定义一个简单的全连接神经网络 class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() self.fc1 = nn.Linear(2, 2) # 输入层到隐藏层 self.fc2 = nn.Linear(2, 1) # 隐藏层到输出层 def forward(self, x): x = torch.relu(self.fc1(x)) # ReLU 激活函数 x = self.fc2(x) return xnn.Sequential
我们可以用 nn.Sequential 来按顺序组织神经网络层。
import torch import torch.nn as nn model = nn.Sequential( nn.Linear(n_in, n_h), # 输入层到隐藏层的线性变换 nn.ReLU(), # 隐藏层的ReLU激活函数 nn.Linear(n_h, n_out), # 隐藏层到输出层的线性变换 nn.Sigmoid() # 输出层的Sigmoid激活函数 )nn.functional
nn.functional 提供了大量的神经网络函数,包括激活函数,损失函数,池化操作,卷积操作等。
import torch import torch.nn.functional as F x = torch.randn(3, 4) # ReLU output = F.relu(x) # 最大池化 x = torch.randn(1, 3, 32, 32) output = F.max_pool2d(x, kernel_size=2, stride=2) predictions = torch.randn(32, 10) targets = torch.randint(0, 10, (32,)) # 交叉熵损失 loss = F.cross_entropy(predictions, targets) # 卷积 x = torch.randn(1, 3, 32, 32) weight = torch.randn(16, 3, 3, 3) bias = torch.randn(16) conv_output = F.conv2d(x, weight, bias, stride=1, padding=1)数据处理和加载
torch.utils.data.Dataset 是一个抽象类,允许你从自己的数据源中创建数据集。
torch.utils.data.DataLoader 用于从 Dataset 中按批次(batch)加载数据。
torchvision.transforms 用于进行常见的图像预处理和增强操作,如旋转、裁剪、归一化等。
2513

被折叠的 条评论
为什么被折叠?



