Torch - 人工神经网络

Torch 中的人工神经网络是由人脑决定的计算模型。它由相互连接的节点或层组成,用于处理输入数据以产生输出。ANN 是使用 torch.nn 模块构建的,该模块提供不同的层和激活函数。此网络通过子类化 nn.Module 并实现前向方法来指定数据流来指定。

感知器

感知器是神经网络的基本构建块,它代表单层神经网络。nn.Linear 模块采用两个参数,即输出和输入特征的数量。它会自动初始化感知器的偏差和权重。

为了实现激活函数,使用阶跃函数。此函数根据输入阈值将二进制值作为输出。这是 Torch 中感知器的简单实现 −

import torchimport torch.nn as nn
class Perceptron(nn.Module):
   def__init__(self, input_size):
      super(Perceptron, self).__init__()
      self.linear = nn.Linear(input_size,1)
   def forward(self, x):
      output = self.linear(x)
      return torch.where(output > 0, torch.tensor(1.0), torch.tensor(0.0))
model = Perceptron(input_size = 4)
input_data = torch.tensor([2.0, 3.0, 4.0, 5.0])
output = model(input_data)
print(output)

逻辑单元

Torch 中的逻辑单元是用于二元分类任务的基本组件。它用作线性变换的逻辑 S 形激活函数。S 形函数将所有实数变为 0 到 1 之间的值,这处理概率估计。nn.sigmoid 模块用于实现 Torch 中的激活函数。它可以轻松集成到神经网络模型中,该模型指定输出是可微的,并在训练期间用于反向传播。

神经网络模块

在 Torch 中,nn 模块用于构建神经网络。这包括不同的层,例如 nn.Linear 用于完全连接层和卷积层。这支持损失函数并优化算法,使函数易于评估模型。

张量和操作

张量是 Torch 中的核心数据结构。它们类似于其他编程语言中的数组。它们是多维数组,可以存储各种类型的数据,例如浮点数和整数。我们还可以使用 torch.tensor()、torch.zeros() 等函数创建张量

数据准备

这是使用 Torch 构建神经网络的一个困难步骤。它需要几个关键过程来在最佳训练模型中指定数据。数据准备对于使用 Torch 的有效神经网络非常重要。它通过各种步骤加载数据集,例如规范化、标准化具有缺失处理值的数据。

  • 加载数据集:它将从各种来源导入数据,例如数据集、在线存储库和 CSV 文件。

  • 数据处理:通过删除重复项、更正错误和处理缺失值来指定数据。这些特征对模型的学习过程贡献相同。

  • 数据增强:应用模型泛化和稳健性技术,例如翻转、旋转和裁剪等翻转数据技术。

  • 拆分数据:数据集通常拆分为测试集,并执行训练集和验证集。

训练和优化

在 Torch 中设置训练循环涉及不同的步骤。首先,我们需要执行前向传递以完成神经网络的输出。然后,我们可以使用损失函数(如 nn.CrossEntropyCriterion)计算损失。最后,当我们更新模型参数时,会使用 adamsgd 等优化。

  • 随机梯度下降:这会使用损失函数相对于每个参数的梯度来更新参数。

  • Adam:它结合了随机梯度下降的两个扩展的优点,确定了 AdaGrad 和 RMSProp。

评估神经网络决定了在看不见的数据上的性能。指标包括召回率、精度、准确率和 F1 分数。在这里,评估过程包括训练超参数期间的验证集和训练后用于测量泛化的一组。