首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多标签分层采样自定义ImageDataGenerator

多标签分层采样自定义ImageDataGenerator
EN

Stack Overflow用户
提问于 2022-01-04 13:12:25
回答 1查看 244关注 0票数 2

我正在研究multi-label classification问题,large-scale数据是高度imbalanced的。因此,我需要根据直觉应用stratified sampling,即我的ImageDataGenerator按比例从each class中抽取every batch中的数据。如有任何建议/解决方案,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 13:37:22

确实是个好问题。

据我所知,在ImageDataGenerator()中没有内置的多标签分层.

我将建议两种可能的办法:

  1. ,您可以对Sequence()类进行子类,以便能够精确地控制网络中每个步骤的馈送内容。您可以重写__getitem__()方法,并确保数据在每一批中按比例抽样。

  1. 您可以使用外部库,该库在将数据提供给网络之前对数据进行预处理。这样,您可以对数据进行预处理,并使用tf.data.Dataset()管道将数据提供给您的网络.

(2)的一个例子是:

代码语言:javascript
复制
from iterstrat.ml_stratifiers import MultilabelStratifiedKFold
import numpy as np

X = np.array([[1,2], [3,4], [1,2], [3,4], [1,2], [3,4], [1,2], [3,4]])
y = np.array([[0,0], [0,0], [0,1], [0,1], [1,1], [1,1], [1,0], [1,0]])

mskf = MultilabelStratifiedKFold(n_splits=2, shuffle=True, random_state=0)

for train_index, test_index in mskf.split(X, y):
   print("TRAIN:", train_index, "TEST:", test_index)
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70579379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档