【问题标题】:Why do I need to shuffle data, when I get the path to images?当我获得图像的路径时,为什么需要对数据进行洗牌?
【发布时间】:2020-02-04 21:20:27
【问题描述】:
train_image_paths = [str(path) for path in list(train_path.glob('*/*.jpeg'))]
random.shuffle(train_image_paths)

上面是您可以看到的示例代码。

在这种情况下我也有同样的问题:

train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(64).shuffle(10000)

我不明白为什么在这些情况下我需要随机播放。

【问题讨论】:

    标签: neural-network dataset conv-neural-network tensorflow2.0


    【解决方案1】:

    在明显的情况下,如果您的训练数据按类标签排序,则改组会很有帮助。通过改组,您可以让您的模型“看到”广泛的数据点,每个数据点在分类的上下文中属于不同的类。如果模型经过排序的训练数据,则您的模型存在过度拟合某些类的风险。简而言之,改组有助于减少方差并确保训练集、测试集和验证集代表真实分布。

    【讨论】:

    • 哦,我明白了。由于我正在获取文件名,因此我不希望它在列表中排序,因为这样模型将从有序列表中学习。这有点令人困惑,因为我以前没有处理过图像,只是看不到正确的图像。再次感谢:)
    • @Yana 是的,这是正确的理解。很高兴我能提供帮助。
    猜你喜欢
    • 2016-10-06
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多