1.对pytorch 的理解
1.pytorch 框架:专门针对GPU加速的
核心功能模块:
1.torch : 提供对多维张量以及对张量的操作,从加减乘除到线性代数操作,随机数生成
2.torch.nn :提供构建神经网络的各种组件,包括各种网络层(全连接层,卷积层,RNN层)
激活函数(RELU,sigmoid,tanh),损失函数(MSE,交叉熵),简化模型构建
3.torch.optim: 提供多种优化算法更新网络权重:包括SGD,Adam,RMSprop ,执行不同的优化策略
4.torchvision : 处理图像数据,包括常用的数据集加载器,图像转换操作,预训练好的模型
5.autograd: 自动求导功能,实现神经网络反向传播的核心,用户自定义前向传播逻辑,pytorch自动计算梯度,简化神经网络的训练
6.torch.cuda : 将张量分配到cuda 设备上
对Module 和function 的理解:
Function: 基础类,用于定义和实现自定义op,创建一个具有特定前向传播和反向传播的新操作,需要继承Function类,并重写forward 和 backward 方法
Init :初始化,Function类本身不具有状态
Forward :定义前向传播,接收任何数量和类型的输入参数,但是返回值必须是tensor元组
Backward :计算图中反向传播是,会被自动调用,指定如何根据函数输出的梯度计算输入的梯度,参数通常是输出的梯度,返回值应该是与输入相对应的梯度
Module:
定义function时,本身不需要变量,Module是变量和Function的结合题,这些参数是可学习的(如神经网络的权重)
1.变量和函数的结合体:
将变量和函数结合在一起,变量通常是可学习的参数,函数是操作这些变量的函数,在神经网络的上下文中,变量通常是网络层的权重和偏置,函数则是应用于输入数据和这些权重的操作(卷积,线性变换)
2.容器:
组织和管理其他module和function ,可以构建复杂的网络结构,继承module类,创建自己的网络层(全连接层)
VGG模型:特点:在卷积层统一使用3*3卷积核核2*2 池化核,层数更深,特征图更宽
实现VGG-16,13层卷积层,3层全连接层
SGD 随机梯度下降:收敛速度慢,对小批量数据计算得出的梯度来更新参数,减少计算资源的消耗,并提高训练速度
‘Adam 优化器:自适应学习率,