昆明seo网站,平面广告设计行业,招聘网站如何做运营,wordpress 博客地址更改文章目录 1 CNN在自然语言的典型应用2 代码解释3 建议 1 CNN在自然语言的典型应用
卷积的作用在于利用文字的局部特征#xff0c;一个词的前后几个词必然和这个词本身相关#xff0c;这组成该词所代表的词群词群进而会对段落文字的意思进行影响#xff0c;决定这个段落到底… 文章目录 1 CNN在自然语言的典型应用2 代码解释3 建议 1 CNN在自然语言的典型应用
卷积的作用在于利用文字的局部特征一个词的前后几个词必然和这个词本身相关这组成该词所代表的词群词群进而会对段落文字的意思进行影响决定这个段落到底是正向还是负向深度学习中的卷积让神经网络去构造特征下面介绍用Keras搭建卷积神经网络来处理情感分析的分类问题
2 代码解释
Sequential(): 这个语句初始化了一个空的顺序模型。顺序模型是线性的意味着你可以逐层添加每一层都按顺序连接到前一层。 通常情况下你会在这一行之后添加额外的代码行以向模型中添加层。Embedding: 这是 Keras 中的一个嵌入层。嵌入层通常用于将整数序列例如文本中的单词索引映射为密集向量的序列。在自然语言处理中这常用于将单词嵌入到连续向量空间中。vocab_size: 这是词汇表的大小表示模型能够处理的不同单词的数量。64: 这是嵌入向量的维度即每个单词将被嵌入到一个64维的向量空间中。input_length: 这是输入序列的长度指定了输入数据的每个样本有多少个时间步时间步是序列中的单个元素。在自然语言处理中它通常对应于文本序列的最大长度。全部代码
from keras.datasets import imdb
from keras.layers import Dense,Dropout,Activation,Flatten
from keras.layers import Conv1D,MaxPooling1D
from keras.layers import Embedding
from keras.models import Sequential
from keras.preprocessing import sequence
import numpy as npmaxword 400
(x_train,y_train),(x_test,y_test) imdb.load_data()
x_train sequence.pad_sequences(x_train,maxlenmaxword)
x_test sequence.pad_sequences(x_test,maxlenmaxword)
vocab_size np.max([np.max(x_train[i]) for i in range(x_train.shape[0])])1
model Sequential()
model.add(Embedding(vocab_size,64,input_length maxword))model.add(Conv1D(filters64,kernel_size3,paddingsame,activationrelu))model.add(MaxPooling1D(pool_size2))
model.add(Dropout(0.25))model.add(Conv1D(filters128,kernel_size3,paddingsame,activationrelu))
model.add(MaxPooling1D(pool_size2))
model.add(Dropout(0.25))
model.add(Flatten)
model.add(Dense(64,activationrelu))
model.add(Dense(32,activationrelu))
model.add(Dense(1,activationsigmoid))
model.compile(lossbinary_crossentropy,optimizerrmsprop,epochs 20,batch_size 100)
scores model.evaluate(x_test,y_test,verbose1)
print(scores)3 建议
可以试着调整模型的参数增加训练次数等或者使用其他的优化方法代码里面用了一个Dropout的技巧大致意思是在每个批量训练过程中对每个节点不论是在输入层还是隐藏层都有独立的概率让节点变成0这样的好处是每次批量训练相当于在不同的小神经网络中进行计算当训练数据大的时候每个节点的权重都会被调整多次在每次训练的时候系统会努力在有限的节点和小神经网络中找到最佳的权重这样可以最大化的找到重要特征避免过度拟合这就是为什么Dropout会得到广泛的应用