技术标签: 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项目地址:
二. 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项目地址:
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)
希望对你有所帮助!
Servlet-授课一、 Servlet1.1 Servlet概述Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一。我们可以像学习Java基础一样,通过API来学习Servlet。这里需要注意的是,在我们之前JDK的API中是没有Servlet规范的相关内容,需要使用JavaEE的API。目前在Oracle官网中的最新版本是JavaEE8,该网址中介绍了JavaEE8的一些新特性。当然,我们可以通过访问官方API,学习和查阅里面的内容。打开官方API网
1.问题描述1.阿里云服务器,根据官网教程,IIS上安装SSL证书,输入https://XXX域名,结果谷歌浏览器出现如下错误,然而IE浏览器却能正常访问。2.我用Nginx发布,谷歌浏览器却可以访问,问题应该出在IIS。2.解决添加链接描述借助该文档成功解决!...
一般特征说的意思是关键点+描述子;一. Fast特征点检测原理: FAST是一种角点, 主要检测局部像素灰度变换明显的地方。核心思想: 如果一个像素与邻域的像素差别较大,那么它更可能是角点。优势: 由于只需要比较像素的亮度大小,所以速度十分快捷。检测过程1.在图像中选取一点像素p,假设它的亮度为Ip;2.设置一个亮度阈值T;3.以像素p为中心,选取半径为3的圆上的上16个像...
1、打开dosbox输入(这里我是新建了一个虚拟的e盘,原电脑没有,然后把虚拟的e盘指向我MASM所在的文件夹,我把MASM存在了D盘,所以就写D:\MASM)2、输入(根据我第一步新建的是虚拟e盘,如果你新建虚拟g盘就写g:)3、在masm所在文件夹下新建一个格式为asm的文档,用记事本编译保存就行。masm文件下载链接:https://pan.baidu.com/s/1DO8C...
当前有效matplotlib版本为:3.4.1。函数概述subplot2grid函数的功能是在特定网格位置中添加一个子图。函数的定义签名为:matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)。函数的调用签名为:ax = subplot2grid((nrows, ncols), (row, col), rowspan, colspan)函数的参数为:shape:定义子图网格的行
居合斩!二分查找69. Sqrt(x) (Easy)34. Find First and Last Position of Element in Sorted Array (Medium)81. Search in Rotated Sorted Array II (Medium)练习-基础难度154. Find Minimum in Rotated Sorted Array II (Medium)540. Single Element in a Sorted Array (Medium)69. Sqrt(
一、前言关于apache的commons-io源码包org.apache.commons.io.FilenameUtils文件名称操作工具类,进行操作系统判断isSystemWindows、文件名称标准化normalize处理、不同操作系统unix路径转换separatorsToUnix、通过文件名判断相当equals/equalsOnSystem/equalsNormalized/equalsN...
iOS开发内购详细版本说明 优雅地小男子 关注2017.02.23 11:08* 字数 877 阅读 8023评论 46喜欢 26一、最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧。1、先从内购的iTunesConnect里配置说起吧,我们先进入苹果的iTunesConnect链接https://itunesconnect.appl
Problem Description设有一有向图,其顶点值为字符型并假设各值互不相等,采用邻接表表示法存储表示。设计一个算法,求该图中所有顶点的入度值(要求按顶点的存储顺序输出)。 Input有多组测试数据,每组数据的第一行表示图的顶点数n和图的边数e(0<n<30);第二行表示各顶点的值,按输入顺序进行存储;接下来有e行,每一行表示每条边所依附的顶点的存储下标i和j,两...
react-native React 0.54.2 弄个VPN pod update
早上了,想必很多读者,都是在路上,或者已经做到办公室了,都吃了么?今天送各位一碗鸡汤,让我们充满斗志地迎接今天的挑战。这几天朋友圈到处是雷军2021年度演讲的宣传,国民梦想家雷军这次的演讲...
tb的启动 -- 如这篇文章看完之后,还是不能解答你心中的疑惑;关注我 后续文章肯定会为你解答