13-pytorch-training with pytorch
Introduction在过去的视频中,我们讨论并演示了:
使用 torch.nn 模块的神经网络层和函数构建模型
自动梯度计算的机制,这是基于梯度的模型训练的核心
使用 TensorBoard 可视化训练进度和其他活动
在本视频中,我们将向您的库存添加一些新工具:
我们将熟悉数据集和数据加载器抽象,以及它们如何简化在训练循环期间向模型提供数据的过程
我们将讨论特定的损失函数以及何时使用它们
我们将了解 PyTorch 优化器,它实现根据损失函数的结果调整模型权重的算法
最后,我们将把所有这些放在一起,并看到完整的 PyTorch 训练循环的实际运行。
Dataset and DataLoaderDataset 和 DataLoader 类封装了从存储中提取数据并将其批量暴露给训练循环的过程。
Dataset 负责访问和处理单个数据实例。
DataLoader 从 Dataset 中提取数据实例(自动或使用您定义的采样器),批量收集它们,然后返回它们以供训练循环使用。 DataLoader 适用于所有类型的数据集,无论它们包含什么类型的数据。
在本教程中,我们将使用 Torch ...
12-pytorch-pytorch tensorboard support
PYTORCH TENSORBOARD SUPPORTBefore You Start要运行本教程,您需要安装 PyTorch、TorchVision、Matplotlib 和 TensorBoard。
With conda:
12conda install pytorch torchvision -c pytorchconda install matplotlib tensorboard
With pip:
1pip install torch torchvision matplotlib tensorboard
安装依赖项后,在安装它们的 Python 环境中重新启动此笔记本。
Introduction在本笔记本中,我们将针对 Fashion-MNIST 数据集训练 LeNet-5 的变体。 Fashion-MNIST 是一组描绘各种服装的图像图块,其中有十个类别标签指示所描绘服装的类型。
123456789101112131415161718192021222324# PyTorch model and training necessitiesimport torchimpo ...
11-pytorch-building models with pytorch
BUILDING MODELS WITH PYTORCHtorch.nn.Module and torch.nn.Parameter除了 Parameter 之外,我们在本视频中讨论的类都是 torch.nn.Module 的子类。这是 PyTorch 基类,旨在封装特定于 PyTorch 模型及其组件的行为。
torch.nn.Module 的一项重要行为是注册参数。如果特定的 Module 子类具有学习权重,这些权重将表示为 torch.nn.Parameter 的实例。 Parameter 类是 torch.Tensor 的子类,具有特殊行为,当它们被指定为 Module 的属性时,它们将被添加到该列表中模块参数。这些参数可以通过 Module 类上的 parameters() 方法访问。
作为一个简单的例子,这是一个非常简单的模型,具有两个线性层和一个激活函数。我们将创建它的一个实例并要求它报告其参数:
12345678910111213141516171819202122232425262728293031323334import torchclass TinyModel(t ...
10-pytorch-the fundaments of autograd
THE FUNDAMENTALS OF AUTOGRADPyTorch 的 Autograd 功能是 PyTorch 灵活快速地构建机器学习项目的一部分。它允许在复杂的计算中快速、轻松地计算多个偏导数(也称为梯度)。此操作是基于反向传播的神经网络学习的核心。
autograd 的强大之处在于它在运行时动态跟踪您的计算,这意味着如果您的模型有决策分支或循环,其长度直到运行时才知道,计算仍然会被正确跟踪,并且您将得到正确的结果梯度来驱动学习。再加上您的模型是用 Python 构建的,与依赖于更严格结构的模型的静态分析来计算梯度的框架相比,它提供了更大的灵活性。
What Do We Need Autograd For?机器学习模型是一个具有输入和输出的函数。在本次讨论中,我们将输入视为一个维度向量 $$ \vec{x} $$,其中包含元素$$x_i$$。然后我们可以将模型 M 表示为输入的向量值函数:$$ \vec{y} = \vec{M}(\vec{x}) $$。 (我们将 M 的输出值视为向量,因为一般来说,模型可能有任意数量的输出。)
由于我们主要在训练的背景下讨论 aut ...
09-pytorch-introduction to pytorch tensors
INTRODUCTION TO PYTORCH TENSORS张量是 PyTorch 中的核心数据抽象。此交互式笔记本深入介绍了 torch.Tensor 类。
首先,让我们导入 PyTorch 模块。我们还将添加 Python 的数学模块来简化一些示例
12import torchimport math
Creating Tensors创建张量的最简单方法是使用 torch.empty() 调用:
123x = torch.empty(3, 4)print(type(x))print(x)
1234<class 'torch.Tensor'>tensor([[7.4055e-29, 0.0000e+00, 7.4101e-04, 0.0000e+00], [2.8026e-45, 0.0000e+00, 0.0000e+00, 0.0000e+00], [0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]])
让我们解释我们刚刚所做的事情:
我们使用 torch 模块附带的 ...
08-pytorch-introduction to pytorch
PyTorch Tensors首先,我们将导入 pytorch。
1import torch
让我们看看一些基本的张量操作。首先,介绍几种创建张量的方法:
123z = torch.zeros(5, 3)print(z)print(z.dtype)
123456tensor([[0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])torch.float32
上面,我们创建了一个用零填充的 5x3 矩阵,并查询其数据类型,发现零是 32 位浮点数,这是默认的。
如果您想要整数怎么办?您始终可以覆盖默认值:
12i = torch.ones((5, 3), dtype=torch.int16)print(i)
您可以看到,当我们更改默认值时,张量会在打印时有用地报告这一点。
随机初始化学习权重是很常见的,通常使用 PRNG 的特定种子来实现结果的可重复性:
12345678910111213torch.manual_seed(1729)r1 ...
LootParams相关解析
LootParams类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576public class LootParams { ServerLevel ; // 服务器世界对象 Map<LootContextParam<?>, Object> ; // ,固定参数map Map<ResourceLocation, LootParams.DynamicDrop> dynamicDrops; //动态掉落map luck; //,幸运值 //从固定参数map获取指定参数,如果不存在抛出异常getParameter(LootContextParam<T> ) { } //,从固定参数map获取指定参数,如果不存在返回nullgetOpt ...
pickaxe代码简介
PickaxeItem类1234567//定义了一个名为PickaxeItem的类,这个类继承自DiggerItem。 PickaxeItem 继承 DiggerItem //它接受四个参数:一个Tier对象,一个整数,一个浮点数和一个Item.Properties对象。这个构造函数用于初始化PickaxeItem对象。PickaxeItem()//义了一个名为canPerformAction的公共方法,它接受两个参数:一个ItemStack对象和一个net.neoforged.neoforge.common.ToolAction对象。这个方法用于检查这个工具是否可以执行给定的动作。canPerformAction()
DiggerItem类12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// 类继承自TieredItem// 实现了Vanishable接口 DiggerItem 继承 TieredIt ...
07-pytorch-save and load model
SAVE AND LOAD THE MODEL在本节中,我们将了解如何通过保存、加载和运行模型预测来持久保存模型状态。
12import torchimport torchvision.models as models
Saving and Loading Model WeightsPyTorch 模型将学习到的参数存储在内部状态字典中,称为 state_dict 。这些可以通过 torch.save 方法保存:
12model = models.vgg16(weights='IMAGENET1K_V1')torch.save(model.state_dict(), 'model_weights.pth')
要加载模型权重,您需要先创建同一模型的实例,然后使用 load_state_dict() 方法加载参数。
123model = models.vgg16() # we do not specify ``weights``, i.e. create untrained modelmodel.load_state_dict(torch.loa ...
06-pytorch-optimizing model parameters
OPTIMIZING MODEL PARAMETERS现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进行猜测,计算其猜测的误差(损失),收集误差相对于其参数的导数(如我们在上一节中看到的),并使用梯度下降优化这些参数。有关此过程的更详细演练,请观看 3Blue1Brown 的有关反向传播的视频
Prerequisite Code我们加载前面有关数据集和数据加载器以及构建模型部分的代码。
1234567891011121314151617181920212223242526272829303132333435363738394041import torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torchvision.transforms import ToTensortraining_data = datasets.FashionMNIST( ...