Torch - 人工神经网络



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

感知器

感知器是神经网络的基本构建块,它表示单层神经网络。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 中,逻辑单元是一个用于二元分类任务的基本组件。它将逻辑 sigmoid 激活函数应用于线性变换。sigmoid 函数将所有实数值转换为 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 分数。此处,评估过程包括在训练期间使用验证集来调整超参数,并在训练后使用一个单独的测试集来衡量泛化能力。

广告