Closed yushengjiexy closed 1 year ago
可以每个task一个dataloader
然后每个任务不同batch,比如batch_a=100,batch_b=1,计算出task_a的平均loss_a,task_b的平均loss_b,再做策略吗?
没试过batch size不一样的,但理论上应该也可以
可以每个task一个dataloader
大佬,那你这样具体是怎么做的,能展开说说吗
没试过batch size不一样的,但理论上应该也可以
我说的不同任务batchsize不一样的方法,好像也有问题,因为我gpu有限,batch设置不了batch_1+batch_b=101这么大
应该可以每个task用不同的batch size,先load完的那些task的dataloader就重新load,这相当于最简单的数据平衡的策略
如果不过采样可以吗?这么会人为拖慢我的训练速度,我希望训练够快
应该可以每个task用不同的batch size,先load完的那些task的dataloader就重新load,这相当于最简单的数据平衡的策略
我没想到其他方法
好吧,谢谢大佬
问题1: 比如,有task_a和task_b,他们的训练样本是非同源的,task_a的训练样本量是100000,task_b的训练样本量是1000。 如果我用一个dataloader去取数据,同一个batch里可能都是task_a的训练样本,一个叠代只训练了task_a这个任务,无法做多任务的梯度策略。 ———————————————————————————————————————————————————— 问题2: 同样是多任务非同源训练数据不均衡,如果是task_a、task_b、task_c三任务的话,还可能一个batch里只有task_a和task_c的样本,没有task_b的样本,如果是这样的话,又要怎么去应用梯度策略?