cs231n课程作业1——二层神经网络分类器感悟

1、反向求导

2、数据预处理

一般采用减均值,若特征间数据的范围差距很大,则考虑除以均方差进行归一化。一般不需要PCA降维和白化操作

切记先切分数据集、验证集、测试集,之后再进行预处理

3、初始化 


权重初始化w = np.random.randn(n) * np.sqrt(2/n) #后续再卷积神经网络中测试

偏置初始化b = 0

多层网络间正则化程度一般取相同,可采用L2正则化和随机失活

4、检查解析梯度

使用少量数据点加快检查速度,检查时先将正则化为0,避免正则化过大掩盖了数据损失部分,之后可以加上正则化进行检查,检查时记得关闭随机失活等不确定性。

5、合理性检查

可进行小参数初始化,检查期望值与实际值的差距;提高正则化强度,观察损失函数变化;对小数据集上对数据进行过拟合,看是否可以达到0损失函数值,如果不行,则模型算法有误。

6、观察学习过程中的重要数值的变化

损失函数值(每epoch周期的变化情况),验证集与测试集的正确率(不应差距过大,也不可以完全贴合),权重更新比例(dw/w)一般为1e-3,否则修改步长。

7、采用SGD+ Momentum +学习率周期减弱

8、使用交叉验证来获取最佳超参数,参数范围建议采用随机搜索(比较宽的范围训练后训练比较窄的范围)

9.设置BP层,批量归一化。后续再卷积神经网络中测试。


你可能感兴趣的:(cs231n)