当前位置:  开发笔记 > 编程语言 > 正文

keras flow_from_directory对类进行过采样或欠采样

如何解决《kerasflow_from_directory对类进行过采样或欠采样》经验,为你挑选了1个好方法。

我正在尝试使用Keras进行二进制分类问题,使用该ImageDataGenerator.flow_from_directory方法生成批处理.但是,我的类非常不平衡,比如在一个类中比另一个类大约多8倍或9倍,导致模型卡住为每个示例预测相同的输出类.有没有办法在flow_from_directory我的小班上设置过采样,或者在每个纪元期间从我的大班中设置欠采样?现在,我刚刚在我的小班级中创建了每个图像的多个副本,但我希望有更多的灵活性.



1> Marcin Możej..:

使用当前版本的Keras - 仅使用Keras内置方法无法平衡数据集.该flow_from_directory简直是建设的所有文件和自己的班级名单,洗牌(如果需要),然后它遍历它.

但是你可以做一个不同的技巧 - 通过编写你自己的生成器来实现平衡python:

def balanced_flow_from_directory(flow_from_directory, options):
    for x, y in flow_from_directory:
         yield custom_balance(x, y, options)

这里custom_balance应该是一个函数,给定批处理(x, y)是平衡它并返回平衡批处理(x', y').对于大多数应用程序,批处理的大小不需要相同 - 但是有一些奇怪的用例(例如有状态的 RNN) - 批处理大小应该具有固定的大小).


有人可以基于此创建一个完全可用的脚本,详细说明吗?我需要一个更具体的custom_balance例子等.
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有