【深度学习】cs231n计算机视觉 Neural Network(两层神经网络)(2)

Neural Network(双层神经网络)

  1. 配合神经网络训练过程理论知识博客一起食用更好~
  2. 配合【深度学习】cs231n计算机视觉 Neural Network(两层神经网络)(1)完整理解整个过程~

实现一个神经网络

该神经网络的要求是:
input - fully connected layer - ReLU - fully connected layer - softmax

1. 初始化

在这里插入图片描述

2.计算损失和梯度:

(1)前向传播
计算损失函数值值:

在这里插入图片描述
(2)计算反向传播
计算梯度值:
在这里插入图片描述

3. 训练过程

在这里插入图片描述在这里插入图片描述在这里插入图片描述

4. predict过程

在这里插入图片描述

整体过程

1. 创建一个小的试验网络

在这里插入图片描述

2. 正向传播:计算scores误差是否在可控范围内

在这里插入图片描述

3. 正向传播:计算loss误差是否在可控范围内

在这里插入图片描述

4. 反向传播:计算梯度误差是否在可控范围内

在这里插入图片描述

5. 训练这个小网络

在这里插入图片描述
在这里插入图片描述
以上验证该网络正确;

6. 加载数据集(CIFAR-10)

在这里插入图片描述

7. 训练网络

在这里插入图片描述

8. debug这个训练过程

使用上面默认参数,准确率大概在0.27,很低,深入了解该问题的一种策略是在优化过程中在训练集和验证集上绘制损失函数和准确性;另一种策略是可视化在网络第一层中学习到的权重。

本来的情况:
在这里插入图片描述分析图表认为学习率太小,调整学习率,重新训练,得到下图:
在这里插入图片描述
在这里插入图片描述
分析图二,认为正则化过小,导致训练集验证集之间准确率差别较大,调整正则化系数后,训练完成如下:
在这里插入图片描述在这里插入图片描述

8. 优化超参数

不断缩小最好的超参数的范围,来得到较好的超参数:

在这里插入图片描述
可视化权重:
在这里插入图片描述

9. 运行在测试集上

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43348528/article/details/104496422