thuml / Transfer-Learning-Library

Transfer Learning Library for Domain Adaptation, Task Adaptation, and Domain Generalization
http://transfer.thuml.ai
MIT License
3.39k stars 553 forks source link

请问这个domain adaptation迁移学习的例子中只能加载内置数据集吗?有没有加载自定义数据集的方法代码? #181

Closed gyr-kdgc closed 1 year ago

thucbx99 commented 1 year ago

可以加载自定义数据集,可以参考此前的issue,实际上在你的任务中完全可以不沿用我们的数据集格式,只需要相应的改写数据集加载过程即可。

gyr-kdgc commented 1 year ago

好的,我后来也找到了,我直接用的ImageList这个类,传入这个类需要的参数,目前可以运行。有个问题就是,以office31数据集为例,它的txt文件中其实已经映射了label,但是ImageList类中的self.class_to_idx属性又重新映射了一下,可能会导致与txt中的映射不一样。这应该不会影响后面的模型训练和评估吧?我看了class_to_idx这个属性,如果我自己不使用的话,这个类的其他方法也没有使用到。

gyr-kdgc commented 1 year ago

可以加载自定义数据集,可以参考此前的issue,实际上在你的任务中完全可以不沿用我们的数据集格式,只需要相应的改写数据集加载过程即可。

还问一下啊,我现在用的是dann,这种迁移方法只适用于源域和目标域的标签都相同是吧?不能迁移分类标签不同的两个数据集

thucbx99 commented 1 year ago

好的,我后来也找到了,我直接用的ImageList这个类,传入这个类需要的参数,目前可以运行。有个问题就是,以office31数据集为例,它的txt文件中其实已经映射了label,但是ImageList类中的self.class_to_idx属性又重新映射了一下,可能会导致与txt中的映射不一样。这应该不会影响后面的模型训练和评估吧?我看了class_to_idx这个属性,如果我自己不使用的话,这个类的其他方法也没有使用到。

是的不影响,这里主要是为了分析的时候可以看到class name

thucbx99 commented 1 year ago

可以加载自定义数据集,可以参考此前的issue,实际上在你的任务中完全可以不沿用我们的数据集格式,只需要相应的改写数据集加载过程即可。

还问一下啊,我现在用的是dann,这种迁移方法只适用于源域和目标域的标签都相同是吧?不能迁移分类标签不同的两个数据集

也适用于分类标签不同的数据集,因为这里只是做特征层面的拉近,没有显示利用类别的信息。所以这样简单的处理也会有问题,在类别空间不一致的情况下会导致不是同一个类别的拉近,这也是Open-set DA、Partial DA、Uniserval DA等setting解决的问题,算法库中也有一些相应算法的实现

gyr-kdgc commented 1 year ago

可以加载自定义数据集,可以参考此前的issue,实际上在你的任务中完全可以不沿用我们的数据集格式,只需要相应的改写数据集加载过程即可。

还问一下啊,我现在用的是dann,这种迁移方法只适用于源域和目标域的标签都相同是吧?不能迁移分类标签不同的两个数据集

也适用于分类标签不同的数据集,因为这里只是做特征层面的拉近,没有显示利用类别的信息。所以这样简单的处理也会有问题,在类别空间不一致的情况下会导致不是同一个类别的拉近,这也是Open-set DA、Partial DA、Uniserval DA等setting解决的问题,算法库中也有一些相应算法的实现

感谢~,那也就是说目前的examples中的dann代码也仅适用于类别空间一致的数据是吗?因为我看到源码中训练的classifier就是最终使用的模型,且模型的类别空间是源域数据的,跟目标域数据没有关系。如果要迁移不同类别空间的数据,可以使用transfer learn库中的Open-set DA、Partial DA、Uniserval DA算法实现对吧?

thucbx99 commented 1 year ago

可以加载自定义数据集,可以参考此前的issue,实际上在你的任务中完全可以不沿用我们的数据集格式,只需要相应的改写数据集加载过程即可。

还问一下啊,我现在用的是dann,这种迁移方法只适用于源域和目标域的标签都相同是吧?不能迁移分类标签不同的两个数据集

也适用于分类标签不同的数据集,因为这里只是做特征层面的拉近,没有显示利用类别的信息。所以这样简单的处理也会有问题,在类别空间不一致的情况下会导致不是同一个类别的拉近,这也是Open-set DA、Partial DA、Uniserval DA等setting解决的问题,算法库中也有一些相应算法的实现

感谢~,那也就是说目前的examples中的dann代码也仅适用于类别空间一致的数据是吗?因为我看到源码中训练的classifier就是最终使用的模型,且模型的类别空间是源域数据的,跟目标域数据没有关系。如果要迁移不同类别空间的数据,可以使用transfer learn库中的Open-set DA、Partial DA、Uniserval DA算法实现对吧?

嗯嗯是的