【问题标题】:How datasets are structured in TensorFlow?TensorFlow 中的数据集是如何构建的?
【发布时间】:2019-09-09 04:49:15
【问题描述】:

在我的第一个 TensorFlow 项目中,我有一个大数据集(1M 个元素),其中包含 8 个类别的元素,当然每个类别都有不同数量的元素。我想将大数据集拆分为 10 个专有的小数据集,每个小数据集大约占每个类别的 1/10。 (这是为了 10 倍交叉验证的目的。)

这是我的做法。 我最终有 80 个数据集,每个类别有 10 个小数据集,然后我使用 sample_from_datasets 从其中的 80 个中随机抽取数据。但是,经过一些步骤后,我遇到了很多警告说“DirectedInterleave 选择了一个用尽的输入:36”,其中 36 可以是其他一些整数。

我想做sample_from_datasets 的原因是我试图对原始数据集进行洗牌。即使 shuffle 只有 0.4 x 总元素,仍然需要很长时间才能完成(大约 20 分钟)。

我的问题是 1.根据我的情况,关于如何构建数据集有什么好的建议吗? 2. 洗牌时间长正常吗?有更好的洗牌解决方案吗? 3. 为什么我会得到这个DirectIngerleave 选择了一个用尽的输入:警告?又是什么意思?

谢谢。

【问题讨论】:

    标签: tensorflow dataset


    【解决方案1】:

    将您的整个数据集分成培训、测试和验证类别。由于您有 1M 数据,您可以这样拆分:60% 的训练、20% 的测试和 20% 的验证。数据集的拆分完全取决于您和您的要求。但通常最大数据用于训练模型。接下来,其余数据集可用于测试和验证。 由于您有 十类 数据集,因此将每个类别分为训练、测试和验证类别。

    假设你有 A、B、C 和 D 类别数据。拆分数据“A”、“B”、“C”和“D”,如下所示:

    'A'- 60% 用于训练 20% 测试和 20% 验证

    'B'- 60% 用于训练 20% 测试和 20% 验证

    'C'- 60% 用于训练 20% 测试和 20% 验证

    'D'- 60% 用于训练 20% 测试和 20% 验证

    最后合并所有的 A、B、C 和 D 训练、测试和验证数据集。

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      相关资源
      最近更新 更多