什么是 PyTorch?

PyTorch 是一个基于 Python 构建的深度学习库。它为深度学习研究人员和开发者提供了 GPU 加速、动态计算图以及直观的接口。PyTorch 遵循“define-by-run”(定义即运行)的方法,这意味着它的计算图是即时构建的,从而允许更好的调试和模型定制。

PyTorch 的主要特性

  • 它使用动态图,允许在模型执行和调试中具有灵活性。
  • 它提供了一个自动微分引擎,简化了深度学习中的梯度计算。
  • 它支持 CUDA,允许在 GPU 上高效执行计算。

!What-is-PytorchPytorch

我们可以在 Windows、macOS 和 Linux 上使用 pip 为 CPU(不带 GPU)安装 PyTorch:

> !pip install torch torchvision torchaudio

PyTorch 张量 (Tensors)

张量 (Tensors) 是 PyTorch 中的基本数据结构,类似于 NumPy 数组,但具有 GPU 加速功能。PyTorch 张量支持自动微分,使其适用于深度学习任务。

Python


CODEBLOCK_16f83e08

输出:

!pytorchOutput

张量运算

Python


CODEBLOCK_e496d55e

输出:

!pytorchOutput

张量的重塑与转置

Python


CODEBLOCK_66484b3a

输出:

!pytorchOutput

Autograd 和计算图

autograd 模块自动计算反向传播的梯度。这对于训练深度神经网络至关重要。

Python


CODEBLOCK_53820a76

输出:

> tensor(4.)

PyTorch 动态创建一个计算图,用于跟踪操作并为反向传播计算梯度。

在 PyTorch 中构建神经网络

!pytorch-workflowPytorch Workflow

在 PyTorch 中,我们使用 torch.nn 模块构建神经网络,其中:

  • nn.Linear(infeatures, outfeatures) 定义一个全连接(密集)层。
  • 激活函数,如 torch.relutorch.sigmoidtorch.softmax,应用在层与层之间。
  • forward() 方法定义数据如何在网络中传输。

要在 PyTorch 中构建神经网络,我们创建一个继承自 torch.nn.Module 的类,并定义其层和前向传播。

Python


CODEBLOCK_ad790eef

输出:

!pytorchOutput

定义损失函数和优化器

一旦定义了我们的模型,我们需要指定:

  • 一个损失函数来度量误差。
  • 一个优化器,根据计算出的梯度更新权重。

我们使用 nn.BCELoss() 作为二元交叉熵损失,并使用 optim.Adam() 作为 Adam 优化器,以结合动量和自适应学习率的优点。

Python


CODEBLOCK_01271a40

训练模型

训练过程包括生成虚拟数据(100个样本,每个有10个特征)。之后,我们运行一个训练循环,在其中我们:

  • optimizer.zero_grad() 清除上一步累积的梯度。
  • 前向传播 (model(inputs)) 将输入传入模型以生成预测。
  • 计算损失 (criterion(outputs, targets)) 计算预测值与真实值之间的差异。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43514.html
点赞
0.00 平均评分 (0% 分数) - 0