哪种方法可以进行图像规范化?

时间:2017-12-18 09:47:17

标签: python tensorflow neural-network deep-learning data-science

在为神经网络训练准备训练集时,我找到了两种可能的方法。

  1. 传统方式:计算整个训练集的平均值,并在发送到网络之前减去每个图像的固定平均值。以类似的方式处理标准偏差。
  2. 我发现tensorflow提供了一个函数public List<Car> SearchCar(DateTime pickdate, DateTime dropdate) { using (var db = new CarRentalDBEntities()) { return db.Cars.Where(item => item.Orders.All(e => // where order pickup date is less Pick or greater than drop (e.PickUpDateTime < pickdate || e.PickUpDateTime > dropdate) && // where order Drop date is less Pick or greater than drop (e.DropDataTime < pickdate || e.DropDataTime > dropdate))) .ToList(); } } ,可以对单个图像进行规范化
  3. 我想知道哪种方式更合适?

1 个答案:

答案 0 :(得分:1)

这两种方式都是可能的,选择主要取决于您阅读数据的方式。

  • 当您可以将整个数据集一次加载到numpy数组中时,整个训练集规范化很方便。例如,MNIST dataset通常完全加载到内存中。这种方式在收敛方面也是优选的,当单个图像变化很大时:两个训练图像,一个主要是白色而另一个大多是黑色,将有非常不同的手段。

  • 每个图像标准化在逐个或小批量加载图像时很方便,例如从TFRecord加载。当数据集太大而太适合内存时,它也是唯一可行的选项。在这种情况下,组织input pipeline in tensorflow并转换图像张量更好,就像图中的其他张量一样。我已经看到CIFAR-10中这种标准化的准确性非常好,所以尽管有前面提到的问题,但这是一种可行的方法。另请注意,您可以通过batch normalization减少负面影响。