当前位置: 首页 > news >正文

多模态COGMEN详解


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:人工智能、话题分享

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

概述

论文模型框架

演示效果

核心逻辑

使用方式

部署方式

避坑指南


本文所有资源均可在该地址处获取。

概述

情绪是人类行动的一个固有部分,因此,开发能够理解和识别人类情绪的人工智能系统势在必行。在涉及不同人的对话中,一个人的情绪会受到其他说话者的言语和他们自己在言语中的情绪状态的影响。在本文中,我们提出了基于 COntex- tualized Graph Neural Network的多模态情感识别COGMEN)系统,该系统利用了本地信息(即说话人之间的内/外依赖性)和全局信息(上下文)。建议的模型使用基于图谱神经网络 (GNN) 的架构来模拟对话中的复杂关系(本地和全局信息)。我们的模型在IEMOCAP和MOSEI数据集上给出了最先进的 (SOTA)结果,详细的消融实验显示了在两个层面上对信息进行建模的重要性

论文模型框架

图2显示了详细的体系结构。输入的话语作为语境提取器模块的输入,该模块负责捕获全局语境。语境提取器为每个话语(utterance)提取的特征形成了一个基于说话人之间交互的图(Graph Formation)。该图作为Relational - GCN的输入,然后是graph transformer,graph transformer使用形成的图来捕捉话语之间的内部和内部关系。最后,作为情感分类器的两个线性层使用所有话语获得的特征来预测相应的情感。

特征融合的方式:
简单的concat,论文运用了最简单的融合方式,有在尝试别的融合方式

transfomer层是提取一段对话中,不同语句之间的信息

经过一层transformer之后,融合了信息,就开始建图,进行图学习

图学习分别进行了图卷积以及,图transformer,图学习的意义在于,更好的捕捉对话中这种一来一回的关系,来融合来自不同短语的情感信息。

最后链接一个分类器就结束了

演示效果

核心逻辑

##transformer层:def forward(self, text_len_tensor, text_tensor):if self.use_transformer:rnn_out = self.transformer_encoder(text_tensor)rnn_out = self.transformer_out(rnn_out)else:packed = pack_padded_sequence(text_tensor, text_len_tensor, batch_first=True, enforce_sorted=False)rnn_out, (_, _) = self.rnn(packed, None)rnn_out, _ = pad_packed_sequence(rnn_out, batch_first=True)return rnn_out##图学习层class GNN(nn.Module):def __init__(self, g_dim, h1_dim, h2_dim, args):super(GNN, self).__init__()self.num_relations = 2 * args.n_speakers ** 2self.conv1 = RGCNConv(g_dim, h1_dim, self.num_relations)self.conv2 = TransformerConv(h1_dim, h2_dim, heads=args.gnn_nheads, concat=True)self.bn = nn.BatchNorm1d(h2_dim * args.gnn_nheads)def forward(self, node_features, edge_index, edge_type):x = self.conv1(node_features, edge_index, edge_type)x = nn.functional.leaky_relu(self.bn(self.conv2(x, edge_index)))return x
##分类器:def forward(self, h, text_len_tensor):if self.args.dataset == "mosei" and self.args.emotion == "multilabel":if self.args.use_highway:h = self.highway(h)hidden = self.drop(F.relu(self.lin1(h)))scores = self.lin2(hidden)# y_hat = torch.sigmoid(scores) > 0.5y_hat = scores > 0return y_hatlog_prob = self.get_prob(h, text_len_tensor)y_hat = torch.argmax(log_prob, dim=-1)return y_hat

使用方式

处理数据
python preprocess.py --dataset=“iemocap_4”

训练模型
python train.py --dataset=“iemocap_4” --modalities=“atv” --from_begin --epochs=55

测试模型
python eval.py --dataset=“iemocap_4” --modalities=“atv”

部署方式

下载我训练好模型,以及数据集,附件里有data,modelcheckpoint文件夹,分别替换代码中的文件夹即可,我对每个单独的模态都有训练。

建议在pytorch官方来下载配置pytorch

建议用conda配置环境

避坑指南

如果新手cuda配置不成功,可以在代码:
parser.add_argument(“–device”, type=str, default=“cuda”, help=“Computing device.”)
处,把"cuda"改成"cpu"的方式

如果.pt文件无法打开,可以选择重新训练,自己生成模型文件

模型文件有硬件要求,提供的.pt文件都是用cpu训练,如果需要改成cuda版本,需要另外进行训练

​​

http://www.lryc.cn/news/497407.html

相关文章:

  • django 实战(python 3.x/django 3/sqlite)
  • 图数据库 | 12、图数据库架构设计——高性能计算架构
  • Unity 利用Button 组件辅助Scroll View 滚动
  • Ubuntu 安装Ansible ansible.cfg配置文件生成
  • 使用PaddlePaddle实现线性回归模型
  • MongoDB集群的介绍与搭建
  • PhpStorm配置Laravel
  • Solving the Makefile Missing Separator Stop Error in VSCode
  • MySQL大小写敏感、MySQL设置字段大小写敏感
  • 项目搭建:guice,jdbc,maven
  • 第四届新生程序设计竞赛正式赛(C语言)
  • 【分布式知识】Redis6.x新特性了解
  • 程序员需要具备哪些知识?
  • 实验四:MyBatis 的关联映射
  • 【Leetcode】189.轮转数组
  • 【JavaSE】常见面试问题
  • 【超详图文】多少样本量用 t分布 OR 正态分布
  • leetcode hot100【Leetcode 416.分割等和子集】java实现
  • 《算法导论》英文版前言To the teacher第4段研习录:有答案不让用
  • Laravel关联模型查询
  • Clickhouse 数据类型
  • 物联网智能项目如何实现设备高效互联与数据处理?
  • 【云服务器】搭建博客服务
  • 如何抽象策略模式
  • BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示
  • node.js实现分页,jwt鉴权机制,token,cookie和session的区别
  • 34 基于单片机的指纹打卡系统
  • 【Linux】用户操作命令
  • Y20030018基于Java+Springboot+mysql+jsp+layui的家政服务系统的设计与实现 源代码 文档
  • windows部署PaddleSpeech详细教程