PyTorch 中卷积神经网络的实现17 Mar 2025 | 4 分钟阅读 我们使用深度神经网络对无尽的数据集进行分类,我们发现它不能最好地对我们的数据进行分类。 当我们使用深度神经网络时,模型精度不够,模型可以改进。 这种改进将在卷积神经网络的帮助下完成。 让我们开始实现我们的卷积神经网络,用于图像识别。 以下是实现用于图像识别的 CNN 的步骤 步骤 1 第一步,我们将定义该类,该类将用于创建我们的神经模型实例。 CNN 模型包括 LeNet 模型、AlexNet 模型、ZFNet 模型 和 GoogleNet 模型。 这些模型的复杂性和性能不断提高,我们将使用 LeNet 模型。 此模型简单有效,足以对无尽的数据集进行准确分类。 LeNet 模型 看起来像 ![]() 该类将继承自 nn 模块,因此我们首先必须导入 nn 包。 我们的类后面将跟着一个 init() 方法。 在 init() 方法中,第一个参数始终是 self。 步骤 2 在第二步中,我们回顾 init() 方法,以提供各种方法和属性。 我们将使用四个输入参数初始化卷积层,即输入通道数(它是一个输入层,因此我们将使用 1 个输入通道)、输出通道数(我们将使用 20 个输出通道以实现有效的特征提取)、内核大小(我们将使用 5 作为内核大小)和步长(我们使用 1 作为步长,因为如果我们选择较大的步长,则会导致提取效果降低)。 我们将把整个命令解包到一个变量中,并附加到我们类中的 self 对象。 同样,我们将定义我们的下一个卷积层,并将相应地调整其参数。 步骤 3 在下一步中,我们将使用带有适当参数的 nn.Linear() 定义我们的两个完全连接的层。 第一个卷积会将输入图像的尺寸从 28 x 28 减小到 24 x 24。然后,数据将通过一个 2 x 2 的池化层,该层会缩小图像的尺寸,并将其转换为 12 x 12。下一个卷积层会将 12 x 12 图像的尺寸减小到 8 x 8 图像。 另一个 5 x 5 的池化层会将 8 x 8 图像的尺寸缩小为 4 x 4 图像。 因此,将传递到第一个完全连接的层中的输入通道将为 4450 和 500 个输出通道作为第二个参数。 同样,我们将通过相应地调整其参数来定义第二个完全连接的层。 步骤 4 现在,我们将在前向函数中定义每个层的池化层和激活函数,但在执行此操作之前,我们将导入 torch.nn.functional 包,然后我们将使用 forward() 函数并将 self 作为第一个参数,并将 x 用于我们将尝试进行预测的任何输入。 现在,我们将定义我们的 relu 函数并连接到我们的第一个卷积层,然后我们将借助带有适当参数的 max_pool2d() 定义池化层。 第一个参数将是前馈 x 值,接下来的两个参数将定义最大池化内核的大小,并将解包到 x 变量中。 同样,此过程将对我们的第二个卷积和池化层执行。 步骤 5 在下一步中,我们将设置我们的模型构造函数。 无需在初始化程序中传递任何内容。 所以 我们的 CNN 模型已实现,现在,我们将讨论其在 CNN 实现中的实现 完整代码下一个主题CNN 的训练 |
我们请求您订阅我们的新闻通讯以获取最新更新。