专栏首页图灵技术域迁移学习模型DANN实现

迁移学习模型DANN实现

Individual differences in EEG signals lead to the poor generalization ability of EEG-based affective models. Transfer learning, as we introduced in the class, can eliminate the subject differences and achieve appreciable improvement in recognition performance. In this assignment, you are asked to build and evaluate a cross-subject affective model using Domain-Adversarial Neural Networks (DANN) with the SEED dataset.

You are required to apply leave-one-subject-out cross validation to classify different emotions with DANN model and compare the results of DANN with a baseline model (you can choose the baseline model on your own). Under Leave-one-subject-out cross validation configuration, for each subject, an affective model should be trained with one subject as target domain, and other subjects as source domain. In the end, there should be five DANN models for each of the subject, and you should report both the individual recognition accuracy and the mean recognition accuracy.

Here are some suggestions of parameter settings. The feature extractor has 2 layers, both with node number of 128. The label predictor and domain discriminator have 3 layers with node numbers of 64, 64, and C, respectively. C indicates the number of emotion classes to be classified.

Python

Python

# Name: DANN_1
# Author: Reacubeth
# Time: 2021/4/22 19:39
# Mail: noverfitting@gmail.com
# Site: www.omegaxyz.com
# *_*coding:utf-8 *_*
 
from torch import nn
import torch
 
 
class ReversalLayer(torch.autograd.Function):
    def __init__(self):
        super(ReversalLayer, self).__init__()
 
    @staticmethod
    def forward(ctx, x, alpha):
        ctx.alpha = alpha
        return x.view_as(x)
 
    @staticmethod
    def backward(ctx, grad_output):
        output = grad_output.neg() * ctx.alpha
        return output, None
 
 
class DANN(nn.Module):
    def __init__(self, input_dim, hid_dim_1, hid_dim_2, class_num, domain_num):
        super(DANN, self).__init__()
        self.feature_extractor = nn.Sequential(nn.Linear(input_dim, hid_dim_1 * 2),
                                               nn.ReLU(),
                                               nn.Linear(hid_dim_1 * 2, hid_dim_1),
                                               nn.ReLU(),
                                               )
 
        self.classifier = nn.Sequential(nn.Linear(hid_dim_1, hid_dim_2),
                                        nn.ReLU(),
                                        nn.Linear(hid_dim_2, class_num),
                                        # nn.Softmax(),
                                        )
 
        self.domain_classifier = nn.Sequential(nn.Linear(hid_dim_1, hid_dim_2),
                                               nn.ReLU(),
                                               nn.Linear(hid_dim_2, domain_num),
                                               # nn.Softmax(),
                                               )
 
    def forward(self, X, alpha):
        self.alpha = torch.tensor(alpha)
        feature = self.feature_extractor(X)
        class_res = self.classifier(feature)
        feature2 = ReversalLayer.apply(feature, self.alpha)
        domain_res = self.domain_classifier(feature2)
        return feature, class_res, domain_res

相关文章

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【深度域适配】一、DANN与梯度反转层(GRL)详解

    CSDN博客原文链接:https://blog.csdn.net/qq_30091945/article/details/104478550

    AI那点小事
  • 原创 | 清华开源迁移学习算法库

    Trans-Learn是基于PyTorch实现的一个高效、简洁的迁移学习算法库,目前发布了第一个子库——深度域自适应算法库(DALIB),支持的算法包括:

    数据派THU
  • 清华大学开源迁移学习算法库:基于PyTorch实现,支持轻松调用已有算法

    清华大学大数据研究中心机器学习研究部长期致力于迁移学习研究。近日,该课题部开源了一个基于 PyTorch 实现的高效简洁迁移学习算法库:Transfer-Lea...

    机器之心
  • KDD2020 | 半监督迁移协同过滤推荐

    协同过滤是推荐系统恒久不变的主题。随着时间的推移,它也不再是那个经典的、苍老的协同过滤,反而在各大顶会中洗练出了更花哨的光华,例如:

    张小磊
  • DANN:利用神经网络算法评估变异位点的有害程度

    之前的文章中我们介绍了CADD软件,通过计算变异位点的打分值,来评估变异位点的有害程度。今天介绍的DANN软件,可以看作是CADD的改进版本,改进了预测的算法,...

    生信修炼手册
  • 超越蒙特卡洛树搜索:北大提出深度交替网络和长期评估围棋模型

    选自arXiv 机器之心编译 参与:李泽南、吴攀 在五月底与柯洁等人的系列对局之后,人工智能围棋大师 AlphaGo 已经功成名就,金盆洗手了,参阅《现场报道 ...

    机器之心
  • 顶刊TPAMI 2020 | 一文打尽无监督多类域适应:理论,算法与实践

    本文介绍我们最近的一篇TPAMI工作:Unsupervised Multi-Class Domain Adaptation: Theory, Algorithm...

    Amusi
  • 现实世界单视图三维重建的领域适应性

    基于深度学习的物体重建算法已经显示出比经典方法的显著改进。然而,当训练数据和测试数据具有不同分布时,基于监督学习的方法表现不佳。事实上,目前大多数作品在合成的S...

    用户8436237
  • CVPR 2018 中国论文分享会 之「深度学习」

    本文为 CVPR 2018 中国论文宣讲研讨会中「Deep Learning」环节的四场论文报告,分别针对Deep Learning的冗余性、可解释性、迁移学习...

    AI科技评论
  • CMU 领域自适应最新进展:对齐数据分布、误差还不够,标注函数也需对齐!

    领域自适应是迁移学习重点研究的课题之一。以往,基于域不变表征的领域自适应方法由于对域偏移(domain shift)不敏感、能为目标任务获取丰富信息受到了极大关...

    AI科技评论
  • 7篇ICLR论文,遍览联邦学习最新研究进展

    2020 年的 ICLR 会议原计划于4 月 26 日至 4 月 30 日在埃塞俄比亚首都亚的斯亚贝巴举行,这本是首次在非洲举办的顶级人工智能国际会议,但受到疫...

    机器之心
  • 机器之心专访杨强教授:联邦迁移学习与金融领域的AI落地

    7 月 21 日、22 日,由 KDD China 主办,西南交通大学和京东金融承办的 KDD Summer School 暨 KDD Pre-Conferen...

    机器之心
  • 利用pytorch实现迁移学习(Transfer Learning)

    接下来对数据进行部分展示,注意torch.utils.data.Dataloaders读取之后的数据为Tensor型,数据格式为C×W×H(C为颜色通道,W、H...

    老潘
  • T5,一个探索迁移学习边界的模型

    T5 是一个文本到文本迁移 Transformer 模型,通过将所有任务统一视为一个输入文本并输出文本,其中任务类型作为描述符嵌入到输入中。该模型使单个模型可以...

    AI科技大本营
  • 【TensorFlow】使用迁移学习训练自己的模型

    最近在研究tensorflow的迁移学习,网上看了不少文章,奈何不是文章写得不清楚就是代码有细节不对无法运行,下面给出使用迁移学习训练自己的图像分类及预测问题全...

    刘早起
  • 应用TF-Slim快速实现迁移学习

    作者:张旭 编辑:张欢 这是一篇以实践为主的入门文章,目的在于用尽量少的成本组织起来一套可以训练和测试自己的分类任务的代码,其中就会用到迁移学习,TF-Sli...

    机器学习算法工程师
  • PyTorch之迁移学习实战

    迁移学习是把一个领域(即源领域)的知识,迁移到另外一个领域(即目标领域),使得目标领域能够取得更好的学习效果。通常,源领域数据量充足,而目标领域数据量较小,迁移...

    IT派
  • 动态 | 再无需从头训练迁移学习模型!亚马逊开源迁移学习数据库 Xfer

    Xfer 是一款针对 MXNet 的迁移学习,为适那些希望达到以下目的的从业者与研究人员而设计:

    AI科技评论
  • 干货|多重预训练视觉模型的迁移学习

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 源 | 全球人工智能 本文介绍的是基...

    昱良

扫码关注云+社区

领取腾讯云代金券