《deep learning for cv with python practical bundle》第八章读书笔记

这一章主要讲的是如何进行结果的优化,是纯理论,没有具体的代码

一.对于数据集的划分:

引用NG(吴恩达)的数据集划分方式

在这里我们60%作为train set,40%作为测试集

60%的train-set当中划分为:
training,training-val.training set用来确定bias偏置
40%的test-set当中,
validation,testing,用来确定方差

一共分为四种情况:

以下分为四种情况,按照NG的数据集的划分形式
提出了一种解决方案:
1)train-loss过高【如左上图所示】:我们应该:
a.使用大的模型,更深的网络模型
b.训练更长一些
c.使用新的模型结构

2) training-validation loss过高【如右上图所示】:
a.使用更多的数据
b.正则化【数据增强,使用优化函数的decay以及动量】
c.使用新的模型结构

3)val-loss过高【如左下图所示】
a.将训练集数据和测试集的数据更相似一些,
b.数据增强
c.使用新的模型结构

4)test-loss过高:【过拟合】,如右下图所示
我们使用更多的验证集数据
 

二.迁移学习or 从头开始训练

这里我们需要对于数据集进行如下两方面考虑:

1)大的数据集or小的数据集

2)pre-trained 数据集和我们实际用来训练的数据集是否具有相似性

对于小的数据集来说:
如果数据集相似,那么直接修改最后的FC层接口+机器学习分类方法,为什么不采用fine-turing的方法?而是将CNN作为特征提取器【采用第三章的方法】?因为数据量太小了容易产生过拟合现象,
如果数据集不同,那么利用浅层conv+分类,因为深层conv用来分类相似的数据集,浅层conv还没有出现明显的分类情况,因此可以用来训练不同类别的小规模数据集

如果是大的数据集:

数据集相似情况下:有可能fine-turning行得通,但是还是有可能需要重新训练
数据集不相似:我们先进行fine-turning,然后将fine-turing的结果作为基准,然后重新训练

猜你喜欢

转载自blog.csdn.net/mdjxy63/article/details/81070872
今日推荐