【发布时间】:2020-10-04 16:28:07
【问题描述】:
我目前正在对基于传感器的活动数据集进行迁移学习,我尝试了两种方法来迁移之前在另一个数据集上训练过的模型。
第一种迁移方式是加载训练好的模型,剪掉最后一个dense和softmax分类层,添加一个新的dense层和softmax层(对应新类的个数),冻结除新的每一层添加并在新数据集上拟合模型。这导致 F1 分数为 30%。
转移模型的第二种方法是初始化一个新模型,基于新数据集,冻结除最后一层外的每一层,仅将权重从加载的模型转移到新初始化的模型并训练模型。这导致 F1 分数或多或少 90%。
所以现在,我正试图弄清楚这两种转移模型的方法之间到底有什么区别。最后的第二种方法只是一个新模型,其中权重已使用已训练的权重进行初始化,而不是使用来自初始化函数(glorot_uniform,lecun_uniform,...)的权重,对吗?对于我对迁移学习的理解,这也是正确的做法。 至于我理解的概念,在迁移学习中,你只重用权重而不是整个模型。
我仍然想知道还有什么对第一种方法的训练产生了如此严重的影响,导致 F1 仅 30%?
谢谢和最好的问候。
【问题讨论】:
-
预训练架构在 imagenet 数据集上进行训练。如果您的数据分布不同,并且您冻结了所有层,那么您的架构肯定会过拟合。使用 imagenet 权重加载模型并将其设置为可训练,以便根据您的数据集修改权重。否则,设置可训练的最后几层来捕获复杂的特征。在 TL 中,权重会被重用,但会根据您的数据集进行修改。你说的第二个模型是ResNet/InceptionResnet/Xception等的架构吗?
-
您好,感谢您的评论。我不使用图像,我使用基于传感器的活动数据。我使用的架构是基于 mdpi.com/1424-8220/16/1/115/htm 的 DeepConvLSTM。该架构由 3 个 Conv-Layers、2 个 LSTM 层和一个用于分类的带有 softmax 激活的密集层组成。对于转移模型,我遵循了视频youtube.com/watch?v=FQM13HkEfBk 中提出的 Andrew Ng 的建议。他冻结了所有转移的层,只将最后一个密集层设置为可训练的。
-
基于传感器的活动数据意味着我有一个由加速度计、陀螺仪和/或磁力计记录的 x、y 和 z 轴的时间离散信号。根据使用的数据集,您有 3、6 或 9 个通道。
标签: keras deep-learning conv-neural-network transfer-learning activity-recognition