中文短文本分类实例九-CRNN(A C-LSTM Neural Network for Text Classification)_a c-lstm neural network for text classification_Macropodus的博客-程序员宅基地

技术标签: CRNN  text-classification  中文短文本分类  text-classify  自然语言处理  短文本分类  深度学习与tensorflow  分类  

一.概述

        CRNN(A C-LSTM Neural Network for Text Classification),是Chunting Zhou等提出的一种联合CNN和RNN的优点的混合神经网络,可称之为"卷积-递归"神经网络。

        不同于RCNN先对文本句子上下文本信息、以及word-embedding本身特征的提取,CRNN中的CNN可以看成另外一种形式的句子信息的Embedding(char、word and n-gram),它具有实际意义上的解释性;也可以看成是对局部短语特征的提取,用于文本表达和文本分类。而LSTM便很善于捕捉文本的全局特征,在它接入CNN后,可以有效缓解CNN对于长文本句子信息捕获不足的缺点。

        其实现在看来,CRN算是比较古老的版本的了,也没什么特别多可说的,不就是把CNN和RNN堆砌起来么,没什么那么多值得大惊小怪的。

        github项目地址:

              https://github.com/yongzhuo/Keras-TextClassification/tree/master/keras_textclassification/m09_TextCRNN

 

二. CRNN模型原理等

2.1  CRNN模型图

                                                       

2.2  tricks等

       初始化: 词向量dim=100, OOV词=随机初始化为均匀分布(uniform distribution [-0.25, 0.25])

       规范化(Regularization): dropout 和 L2

               似乎就没有了

 

三. CRNN代码实现

3.1   很简单的一个模型,就是把CNN和LSTM连在一起,似乎就好了

         github项目地址:

            https://github.com/yongzhuo/Keras-TextClassification/blob/master/keras_textclassification/m09_TextCRNN/graph.py

3.2 核心代码

    def create_model(self, hyper_parameters):
        """
            构建神经网络
        :param hyper_parameters:json,  hyper parameters of network
        :return: tensor, moedl
        """
        super().create_model(hyper_parameters)
        x = self.word_embedding.output
        embedding_output_spatial = SpatialDropout1D(self.dropout_spatial)(x)

        if self.rnn_units=="LSTM":
                layer_cell = LSTM
        elif self.rnn_units=="GRU":
                layer_cell = GRU
        elif self.rnn_units=="CuDNNLSTM":
                layer_cell = CuDNNLSTM
        elif self.rnn_units=="CuDNNGRU":
                layer_cell = CuDNNGRU
        else:
            layer_cell = GRU
        # CNN
        convs = []
        for kernel_size in self.filters:
            conv = Conv1D(self.filters_num,
                            kernel_size=kernel_size,
                            strides=1,
                            padding='SAME',
                            kernel_regularizer=regularizers.l2(self.l2),
                            bias_regularizer=regularizers.l2(self.l2),
                            )(embedding_output_spatial)
            convs.append(conv)
        x = Concatenate(axis=1)(convs)
        # Bi-LSTM, 论文中使用的是LSTM
        x = Bidirectional(layer_cell(units=self.rnn_units,
                                     return_sequences=True,
                                     activation='relu',
                                     kernel_regularizer=regularizers.l2(self.l2),
                                     recurrent_regularizer=regularizers.l2(self.l2)
                                     ))(x)
        x = Dropout(self.dropout)(x)
        x = Flatten()(x)
        # 最后就是softmax
        dense_layer = Dense(self.label, activation=self.activate_classify)(x)
        output = [dense_layer]
        self.model = Model(self.word_embedding.input, output)
        self.model.summary(120)

 

希望对你有所帮助!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rensihui/article/details/93327702

智能推荐

sql 右键编辑200行查询很慢_sql server 2014 右键 很慢-程序员宅基地

sql右键编辑200速度很慢解决办法!_sql server 2014 右键 很慢

Windows系统远程访问出现“凭据无法工作”或“你的凭据无法工作”_我们无法使用此凭据登录因为你的域不可用_Coymn Liu的博客-程序员宅基地

问题描述使用远程桌面访问Windows系统的ECS实例时,出现如下错误。使用管理终端连接服务器可正常登录。问题原因Windows操作系统内开启密码保护共享功能。解决方案参考如下操作步骤,关闭密码保护共享功能。使用管理终端登录ECS实例。打开 控制面板 > 所有控制面板项 > 网络和共享中心 > 高级共享设置。在 密码保护的共享配置项,选择 关闭密码保护共享 即可。..._我们无法使用此凭据登录因为你的域不可用

计算机视觉和模式识别领域SCI期刊介绍-程序员宅基地

原帖地址: http://blog.sciencenet.cn/blog-370458-750306.html 关于计算机视觉和模式识别领域的期刊并不是很多,下面我收集了一些该领域的代表性期刊,并介绍了他们的影响因子以及投稿难度和审稿周期。希望对大家有帮助吧,后期大家还有发现的可以留言,补充哦。首先介绍计算机视觉领域的4个顶级代表性期刊吧。(1) IEEE Transactions..._计算机视觉好中的sci

什么是数据结构和算法?_数据结构算法就是_优雅哥cc的博客-程序员宅基地

文章目录一、什么是数据结构?一、什么是数据结构?数据结构就是在计算机中,存储和组织数据的方式。_数据结构算法就是

通过 pom 设置 Maven 通过 JDK 1.8 进行编译 ——maven-compiler-plugin插件-程序员宅基地

maven项目会用maven-compiler-plugin默认的jdk版本来进行j编译,如果不指明版本就容易出现版本不匹配的问题,可能导致编译不通过的问题。解决办法:在pom文件中配置maven-compiler-plugin插件(以jdk1.8)。1、方式一<properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source

Non-Prime Factors Kattis - nonprimefactors_kattis prime sieve-程序员宅基地

题意:给出一个数a,求出a的因数中有多少个数是非质数埃筛,直接打出表来,并且输入输出一定要用scanf,cin加速了也不行!!!#include <bits/stdc++.h>using namespace std;const int maxn=2e6+5;int ans[maxn];int isp[maxn];void isprime(){ isp[1]=1; for(int i=2;i<=maxn;i++){ if(!isp[i]){ _kattis prime sieve

随便推点

C#操作内存_c# 写内存-程序员宅基地

using System;using System.Text;using System.Diagnostics;using System.Runtime.InteropServices;namespace PlantsVsZombiesTool{ publicabstractclass Helper { [DllImpo_c# 写内存

使用计算机时 开关机顺序会,电脑如何正确开关机_O超哥的博客-程序员宅基地

电脑如何正确开关机要使用电脑必须启动它,要停用电脑的时候必须要关闭,电脑如何正确开关机呢?下面是小编分享的经验,一起来看一下吧。电脑开机正确步骤1、先把总电源打开。就是接通主机与显示器的总电源。一般是一个插排,打开插排的开关。2、先开显示器。这一步经常有人弄错,开电脑首先应该先开显示器。这样做对显示器好。3、再开主机。打开显示器后,就可以按主机的开始按钮了。这个顺序不能反,不然会有损机器的使用寿命..._电脑如何正确关机

观察者模式及其应用场景_观察者模式应用场景-程序员宅基地

观察者模式(Observer Design Pattern),也叫做发布订阅模式(Publish-Subscribe Design Pattern)、模型-视图(Model-View)模式、源-监听器(Source-Listener)模式、从属者(Dependents)模式。指在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。比如说Redis 中的基于频道的发布订阅就是观察者模式的应用:一、观察者模式的介绍观察者模式是一种对象行为型模式,下面就来看看观察者模式_观察者模式应用场景

Windows 10 PCIE板卡驱动开发问题_windros10 pcie驱动-程序员宅基地

使用Visual Studio 2017 + WDK 10 KMDF模版 开发的驱动在Windows 7 上可以正常使用。在Windows 10 上可以正常安装驱动,驱动安装完,使用事件查看器查看到设备有错误:来源Kernel-PnP、问题0x15、问题状态0x00。另外,在驱动使用过程中,初始化、BAR0空间操作、DMA启动都正常,但是收不到板卡发来的中断。 此问题在Win 10 驱动中..._windros10 pcie驱动

Spring源码学习(三)—spring-Beans(1)-程序员宅基地

从这篇起,正式开始对spring源码的阅读和学习。根据书上的流程,先对spring核心容器模块中的Beans模块下手。对于beans包来说,有两个非常核心的类,第一个是DefaultListableBeanFactory,该类实现默认的对bean的注册和加载,这也是控制反转特性的最基本的功能,第二个类是XmlBeanDefinitionReader,该类提供了spring的IOC容器中对x...

毕设题目:Matlab手写或印刷数字字母识别_基于matlab的手写数字识别毕设_海神之光的博客-程序员宅基地

1 案例背景4 现成案例(代码+参考文献)1【手写数字识别】基于matlab CNN网络手写数字识别分类【含Matlab源码 1286期】2【手写数字识别】基于matlab Fisher分类手写数字识别【含Matlab源码 505期】3【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 1118期】4【手写数字识别】基于matlab GUI RBM神经网络手写数字识别【含Matlab源码 1109期】5【手写数字识别】基于matlab GUI SVM手写数字识_基于matlab的手写数字识别毕设

推荐文章

热门文章

相关标签