目的
之前阅读了AAAI2020 Deep Embedded Complementary and Interactive Information for Multi-view Classification这篇文章并做了阅读笔记,但是这是一个用于单标签任务的模型,出于用来做对比实验的目的欲把它改成了多标签模型,下面开始。
基础
先观察模型结构如下图
聚焦到模型最后的预测结果并融合的部分,观察源码发现最后的分类部分就是简单的全连接层,而且因为是多分类问题所以随后输出层有num_classes
个节点。
self.classifier_out = nn.Sequential(
nn.Linear(num_view * fea_out, fea_com),
nn.BatchNorm1d(fea_com),
nn.ReLU(inplace=True),
nn.Dropout(),
nn.Linear(fea_com, num_classes),
nn.BatchNorm1d(num_classes)
)
那么最简单的更改方法来啦,模型不用动,把loss从nn.CrossEntropyLoss()
这个多分类损失换成BCEWithLogitsLoss()
,然后把模型最后输出直接计算损失然后反向传播即可。