Tensorflow学习九—过拟合欠拟合
欠拟合
当我们使用的模型复杂度远远低于你真实数据的复杂程度,这时我们叫做欠拟合(under fitting)。出现的情况及时Acc上升一定程度之后不再上升,Loss下降到一定程度之后不再下降。在train和test的时候都会表现的很差。解决方法就是增加模型的复杂度
过拟合
使用的模型的复杂度远远大于真实数据的复杂程度。由下图我们可以看出过分的把噪声包含进来了,逼近与每一个点。
over-fitting出现的时候,会发现在train的时候表现的特别好而test的时候会表现的很差。用专业的词叫做Generalization Performace也就是泛化能力变差。
那么什么情况会出现这种over fitting?
1、数据集不是很多的时候。
2、样本噪音干扰过大
3、参数太多,模型复杂度过高
那么怎么检测over fitting和怎么解决over fitting?
1、保留验证数据集,对训练成果进行验证;如果发现它在train中loss和acc状态表现特别好,而在test表现很差这就是表示可能出现了over fitting 。
(x, y), (x_val, y_val) = datasets.mnist.load_data()
db = tf.data.Dataset.from_tensor_slices((x, y))
db = db.map(preprocess).shuffle(60000).batch(batchsz).repeat(10)
ds_val = tf.data.Dataset.from_tensor_slices((x_val, y_val))
ds_val = ds_val.map(preprocess).batch(batchsz, drop_remainder=True)
有的时候也会分成三个部分:train , val , test
(x, y), (x_test, y_vtest)