Pytorch Tensor的通道顺序:
[batch, channel, height, width]
BP(back propagation, 反向传播)算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行, 而调整权值和阈值则从输出到输入的方向进行。
权重的更新:
- SGD优化器(Stochastic Gradient Descent, 随机梯度下降)
- SGD+Momentum优化器
- Adagrad优化器(自适应学习率)
- RMSProp优化器(自适应优化器)
Adam
优化器(自适应学习率)
比较常见SGD+Momentum或Adam。SGD虽然慢,但可能是最优的
激活函数:
卷积层(Convolution):
- 目的:进行图像特征提取
- 拥有局部感知机制
- 权值共享,极大降低了参数量,便于模型训练
卷积操作:
卷积操作过程中,矩阵经过卷积操作后的尺寸由以下几个因素决定:
- 输入图片大小WxW
- Filter大小FxF
- 步长S
- padding的像素数P
经过卷积后的矩阵尺寸大小计算公式:
N = (W - F + 2P)/S + 1
目的:对特征图进行稀疏处理,减少数据运算量 特点:
- 首次利用GPU进行网络加速训练
- 使用了
ReLU
激活函数,而不是传统的Sigmoid
激活函数以及Tanh
激活函数 - 使用了
LR
N局部相应归一化 - 在全连接层的前两层中使用
Dropout
随机失活神经元操作,以减少过拟合
- 引入了
Inception
结构,融合不同尺度的特征信息 - 使用
1x1
的卷积核进行降维以及映射处理 - 添加两个辅助分类器帮助训练
- 丢弃全连接层,使用平均池化层,大大减少模型参数
Deep Residual Learning for Image Recognition
当网络深度增加时,训练/测试损失增加:
ResNet-34:
- 训练时要将training设置为True,验证时将training参数设置为False。在pytorch中可通过创建模型的
model.train()
和model.eval()
方法控制 batch_size
尽可能设置大点,设置小后表现可能很糟糕,设置的值越大求的均值和方差越接近整个训练集的均值和方差- 建议将bn层放在卷积层(Conv)和激活曾(例如Relu之间),且卷积层不要使用偏置bias。因为没有用。
Aggregated Residual Transformations for Deep Neural Networks