2016-12-23 39 views
2

目前,我只是探索由tflearn(VGG.Net,GoogLeNet,ResNet等)提供的网络,并将它们应用到我的数据集(128 * 128单通道图像,925图像 - 增强前,5058图像 - 增强后,两类 - 癌性&非癌性)。处理过度拟合:数据扩大,交叉验证,旋转增强

  1. 问题:训练准确性(〜100%)和验证准确性(〜70%)之间差异很大。我的方法:1)通过减少卷积核的数量来降低模型复杂度,2)减少完全连接层中的节点数量,3)扩大FC处的丢弃率。

  2. 问:

1)难道这过度拟合的问题已经在一些功名 - 至少由不足(培训)的数据集中出现? 我想如果我有更多的(训练)数据集,这将充分代表母亲分布(包括验证数据集),以便验证准确性与训练准确性相似。

2)交叉验证是否有助于减少差异?但是,如果我有一套永远不会用作训练集的测试集,我认为我的测试集仍然会显示出与训练集相当大的差异。那是对的吗? 3)据我所知,移位增量不会提供新的信息,因为卷积是移不变的。如何旋转? (在切片ROI之前旋转,以便图像在边界不包含零)

谢谢! :d

回答

1
  1. 不,不,如果你不改变你的训练数据集的大小。但是,交叉验证通常用于将更多数据用作训练数据。
  2. 只有当数据集中存在旋转时,旋转才会有帮助。例如,180°旋转实际上可能会造成伤害。

标准图像良好的扩充可以在tensorflow CIFAR10 example发现:

  • tf.random_crop(reshaped_image, [height, width, 3])
  • tf.image.random_flip_left_right(distorted_image)
  • tf.image.random_brightness(distorted_image, max_delta=63)
  • tf.image.random_contrast(distorted_image, lower=0.2, upper=1.8)

为了打击OV呃,你可能想引入正规化;尤其是Dropouttf.nn.dropout)。

但是,它不一定是过度配合。也可能是测试数据的分布与您的训练数据不同(但过度拟合更有可能)。