图像识别-pytorch

 Pytorch神经网络工具箱

图像识别-pytorch_第1张图片

 神经网络核心组件

图像识别-pytorch_第2张图片

神经网络的基本组件

  • :包括卷积层、池化层、全连接层等。层是神经网络的基本结构,输入张量通过层后变为输出张量。
  • 模型:由层构成的网络结构,如AlexNet、VGG等。模型可以是预训练的,也可以自己搭建。
  • 损失函数:用于衡量预测值与真实值之间的差距,如均方误差。损失函数越小越好。
  • 优化器:用于调整权重和偏置,使损失函数最小化。优化器决定了参数的调整方式。

图像识别-pytorch_第3张图片

误差反传这里使用的

        反向传播(误差反传)

                输出层——各隐藏层——输入层

构建神经网络的主要工具

nn.Module

        ①继承自Module类,可自动提取可学习的参数。

        ②适用于卷积层、全连接层、dropout层。

nn.functional

        ①更像是纯函数。

        ②适用于激活函数、池化层。

构建神经网络的主要工具-nn.Module图像识别-pytorch_第4张图片

构建神经网络的主要工具-nn.functional

 nn.Module,写法一般为nn.Xxx,如nn.Linear、nn.Conv2d、nn.CrossEntropyLoss等。nn.functional中的函数,写法一般为nn.funtional.xxx,如nn.funtional.linear、nn.funtional.conv2d、nn.funtional.cross_entropy等。

两者的主要区别如下。

        nn.Xxx继承于nn.Module,nn.Xxx 需要先实例化并传入参数,然后以函数调用的方式调用实例化的对象并传入输入数据。它能够很好的与nn.Sequential结合使用,而nn.functional.xxx无法与nn.Sequential结合使用。

        nn.Xxx不需要自己定义和管理weight、bias参数;而nn.functional.xxx需要你自己定义weight、bias,每次调用的时候都需要手动传入weight、bias等参数, 不利于代码复用。

        dropout操作在训练和测试阶段是有区别的,使用nn.Xxx方式定义dropout,在调用model.eval()之后,自动实现状态的转换,而使用nn.functional.xxx却无此功能。

构建模型

图像识别-pytorch_第5张图片

       ① 继承nn.Module基类构建模型。

       ② 使用nn.Sequential按层顺序构建模型。

      ③  继承nn.Module基类构建模型,又使用相关模型容器(nn.Sequential,nn.ModuleList,nn.ModuleDict等)进行封装。

构建模型的步骤

  • 定义网络层:确定每一层的类型和参数。
  • 构建网络:按照顺序将各层组合起来,形成完整的网络结构。
  • 正向传播:从输入层到输出层的计算过程。
  • 损失函数:计算预测值与真实值之间的差距。
  • 反向传播:根据损失函数调整权重和偏置。

你可能感兴趣的:(机器学习,cnn,pytorch)