对于少量的有监督数据集和大量的无监督数据集,只用zip的话,那么取完有监督数据集后剩下的无监督数据集就浪费了,这个时候可以使用python内置的itertools,将其中的小部分变成循环采样:

from itertools import cycle
for idx, (sup_data, un_data) in enumerate(zip(cycle(sup_dataloader), unsup_dataloader)):
    (imgs, labels) = sup_data[0].to(device), sup_data[1].to(device)
    (uimgs, ulabels) = un_data[0].to(device), None
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐