【问题标题】:Training CNN on small subsets to select architecture在小子集上训练 CNN 以选择架构
【发布时间】:2020-03-30 21:48:38
【问题描述】:

您知道是否可以使用我的训练数据的一个非常小的子集(仅例如 100 或 500 个实例)来快速训练非常粗糙的 CNN 网络以比较不同的架构,然后选择表现最好的一个?

当我说“可能”时,我的意思是有证据表明应用这种选择策略是有效的,并且所选网络在这项特定任务中将始终优于其他网络。

谢谢,

有关信息,该项目将由两个阶段的 CNN 组成,用于对多通道时间序列进行分类。第一个 CNN 将预测下一段时间的输入数据,然后第二个 CNN 将使用此预测并将结果分为两类。

【问题讨论】:

  • 一切皆有可能。
  • 如果减少训练数据的大小,会影响准确性。为了选择具有良好超参数的良好模型,您必须尝试每种组合。
  • 当然会影响准确性,但随着实例数量的增加,我对每个架构的结果的一致性更感兴趣

标签: python tensorflow deep-learning conv-neural-network


【解决方案1】:

您所说的程序实际上是在实践中使用的。在调整超参数时,很多人会选择整个数据集的一个子集来执行此操作。

子集上的最佳架构是否一定是完整数据集上的最佳架构? !然而,这是您所拥有的最佳猜测,这就是它有用的原因。


关于您的问题需要注意的几点:

  1. 100-500 个实例极低! CNN 仍然需要训练。当我们说 subset 时,我们通常指的是数以万计的图像(在数百万的数据集中)。如果您的数据集少于 50000 张图像,那么为什么需要一个子集?在整个数据集上进行训练。

  2. 与很多人的看法相反,架构的细节对分类性能不重要。您提到的一些超参数(例如内核大小)是次要的。你应该关注的关键是深度、层的大小、池的使用/跳过连接/批量规范/丢弃等。

【讨论】:

  • 谢谢@Djib2011,这个数字是一个我实际上不知道的例子。在我的情况下,它不是图像,而是来自传感器的时间序列数据,每几十秒采样一次。我有大约一年的 100 架飞机超过 5000 个传感器的数据。所以每个传感器有 310 亿个实例。所以 50000 作为一个子集是完全可以接受的。
  • 是的,显然在您的子集架构在整个集合上的泛化程度和训练速度之间存在权衡……我认为大约 50000-100000 是一个数字,您可以确保CNN 将经过适当的训练并进行大量实验。
猜你喜欢
  • 2017-12-12
  • 2019-06-26
  • 2020-04-27
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
相关资源
最近更新 更多