TextRNN+attention

  • attention机制
  • 代码
  • attention机制

attention机制

在文本分类任务中引入注意力机制,可以更好地提升模型效果,增加模型的可解释性。
在不利用attention时,文本序列中每个单词对分类任务的贡献程度是相同,然而现实是,分类任务上总会存在一些无用词,因此,引入attention可以很好衡量每个单词对分类任务的贡献程度。


α t \alpha_t αt为每个单词经线性注意力后的权重值。

代码

# coding:utf-8import torch.nn.functional as f
from models.BasicModule import *class RNNAttention(BasicModule):def __init__(self, config):super(RNNAttention, self).__init__()# 词向量嵌入层if config.embedding_pretrained is not None:self.embedding = nn.Embedding.from_pretrained(config.embedding_pretrained, freeze=False)else:self.embedding = nn.Embedding(config.vocab_size, config.embed_size)# RNN层if config.RNN_type == 'LSTM':self.rnn = nn.LSTM(input_size=config.embed_size, hidden_size=config.RNN_Att_hidden_size,num_layers=config.RNN_Att_num_layers, dropout=config.dropoout,bidirectional=config.RNN_Att_bidirectional, batch_first=True)else:self.rnn = nn.GRU(input_size=config.embed_size, hidden_size=config.RNN_Att_hidden_size,num_layers=config.RNN_Att_num_layers, dropout=config.dropoout,bidirectional=config.RNN_Att_bidirectional, batch_first=True)self.tanh = nn.Tanh()# attention层权重self.w = nn.Linear(config.RNN_Att_hidden_size*2, config.RNN_Att_hidden_size*2)# 全连接层self.fc1 = nn.Linear(config.RNN_Att_hidden_size*2, config.Att_hidden_size)self.fc = nn.Linear(config.Att_hidden_size, config.label_num)def forward(self, x):emded = self.embedding(x)h, _ = self.rnn(emded)h = self.tanh(h)alpha = self.w(h)alpha = f.softmax(alpha, dim=1)out = h * alphaout = torch.sum(out, 1)out = self.tanh(out)out = self.fc1(out)out = self.fc(out)return out

attention机制

一些attention机制

TextRNN+attention相关推荐

  1. 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类 ...

  2. NLP-分类模型:短文本分类概述【FastText、TextCNN、TextRNN、TextRCNN、DPCNN】

    一.概述​ 随着信息技术的发展,最稀缺的资源不再是信息本身,而是对信息的处理能力.且绝大多数信息表现为文本形式,如何在如此大量且复杂的文本信息中如何获取最有效的信息是信息处理的一大目标.文本分类可以帮 ...

  3. 【代码实战】基于pytorch实现中文文本分类任务

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/73176 ...

  4. 用深度学习解决大规模文本分类问题

     用深度学习解决大规模文本分类问题 人工智能头条 2017-03-27 22:14:22 淘宝 阅读(228) 评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者 ...

  5. 详解CNN实现中文文本分类过程

    摘要:本文主要讲解CNN实现中文文本分类的过程,并与贝叶斯.决策树.逻辑回归.随机森林.KNN.SVM等分类算法进行对比. 本文分享自华为云社区<[Python人工智能] 二十一.Word2Ve ...

  6. 万字总结Keras深度学习中文文本分类

    摘要:文章将详细讲解Keras实现经典的深度学习文本分类算法,包括LSTM.BiLSTM.BiLSTM+Attention和CNN.TextCNN. 本文分享自华为云社区<Keras深度学习中文 ...

  7. 让机器有温度:带你了解文本情感分析的两种模型

    摘要:本篇博文从模型和算法的视角,分别介绍了基于统计方法的情感分析模型和基于深度学习的情感分析模型. 文本情感分析(Sentiment Analysis)是指利用自然语言处理和文本挖掘技术,对带有情感 ...

  8. 系统学习NLP(十八)--文本分类概述

    转自:https://blog.csdn.net/u014248127/article/details/80774668 文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多 ...

  9. 传统文本分类和基于深度学习文本分类

    用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总 ...

最新文章

  1. Tungsten Fabric SDN — 软件架构
  2. 浅析手机端网站建设的基本流程
  3. Flex前端与Java服务端交互,反射机制挑大旗
  4. python素材和代码_python之文件和素材
  5. 现代软件工程 作业 团队项目计划
  6. 小米再添猛将!雷军官宣常程担任小米集团副总裁
  7. TensorFlow2.0:张量的合并与分割
  8. flink在k8s上的部署和使用教程
  9. feign返回结果统一处理_SpringCloud异常处理统一封装我来做-使用篇
  10. redis技术分享ppt_技术分享丨华为鲲鹏架构Redis知识二三事
  11. 远程接入CBTS的应用
  12. Lucene/Solr/ElasticSearch搜索问题案例分析
  13. 2017年苹果开发者账号申请——账号VISA卡支付流程
  14. 冲激函数和傅里叶变换
  15. phpmail通过qq发邮箱失败_PHPMailer使用QQ邮箱实现邮件发送功能
  16. Springboot 静态资源路径配置 实例介绍
  17. 辅助驾驶功能开发-功能规范篇(04)- 交通拥堵辅助及集成式巡航辅助TJA/ICA
  18. APP绕过模拟器-小白版
  19. 基于JAVA的二次元风格论坛
  20. adb、logcat

热门文章

  1. docker——Ubuntu镜像操作和apache web容器操作小实训
  2. busybox的实现原理分析(C语言实现简易版的busybox)
  3. 还在使用Postman吗?out了兄弟,快来解锁Apifox这款国产化API工具吧
  4. xml的三种解析方式
  5. ENDNOTE使用方法(转发)
  6. 实现给页面长截图,带滚动条的部分也截取
  7. KNN算法和Kernel KNN算法的区别
  8. 一种简单的抽签/抽奖算法逻辑
  9. BACnet IP通讯方式组网步骤
  10. linux打包解压命令