RNN情感分类问题实战
import tensorflow as tf
import numpy as np
import tensorflow as keras
from tensorflow.keras import losses,Sequential,optimizers,layers,datasetsbatchsz=128#批量大小
total_words=10000#词汇表大小N_vocab
max_review_len=80#句子最大长度 s,大于的句子部分将截断,小于的将填充
embedding_len=100#词向量特征长度
#加载IMDB数据集,此处的数据采用数据编码,一个数字代表一个单词
(x_train,y_train),(x_test,y_test)=datasets.imdb.load_data(num_words=total_words)
#print(x_train.shape,len(x_train[0]),y_train.shape)
#print(x_test.shape,len(x_test[0]),y_test.shape)
#构建数据集,打散,批量,并丢掉最后一个不够batchsz的batch
x_train=tf.keras.preprocessing.sequence.pad_sequences(x_train,maxlen=max_review_len)
x_test=tf.keras.preprocessing.sequence.pad_sequences(x_test,maxlen=max_review_len)
db_train=tf.data.Dataset.from_tensor_slices((x_train,y_train))
db_test=tf.data.Dataset.from_tensor_slices((x_test,y_test))db_train=db_train.shuffle(1000).batch(batchsz,drop_remainder=True)
db_test=db_test.batch(batchsz,drop_remainder=True)
#统计数据集属性
#print('x_train shape: ',x_train.shape,tf.reduce_max(y_train),tf.reduce_min(y_train))
#print('x_test shape: ',x_test.shape)class MyRNN(tf.keras.Model):#cell方式构建多层网络def __init__(self,units):super(MyRNN,self).__init__()#[b,64],构建cell初始化状态向量,重复使用self.state0=[tf.zeros([batchsz,units])]self.state1=[tf.zeros([batchsz,units])]#词向量编码[b,80]=>[b,80,100]self.embedding=layers.Embedding(total_words,embedding_len,input_length=max_review_len)#构建2个cell,使用dropout技术防止过拟合self.run_cell0=layers.SimpleRNNCell(units,dropout=0.5)self.run_cell1=layers.SimpleRNNCell(units,dropout=0.5)#self.outlayer=layers.Dense(1)#构建分类网络,用于将CELL的输出特征进行分类,2分类#[b,80,100]->[b,64]->[b,1]self.outlayer = Sequential([layers.Dense(units),layers.Dropout(rate=0.5),layers.ReLU(),layers.Dense(1)])def call(self,inputs,training=None):x=inputs#获取词向量[b,80]=>[b,80,100]x=self.embedding(x)#通过2个RNN CELL,[b,80,100]=>[b,64]state0=self.state0state1=self.state1for word in tf.unstack(x,axis=1):#word:[b,100]out0,state0=self.run_cell0(word,state0,training)out1,state1=self.run_cell1(out0,state1,training)#末层最后一个输出作为分类网络的输入:[6,64]=>[b,1]x=self.outlayer(out1,training)#通过激活函数p(y is pos[x])prob=tf.sigmoid(x)return probdef main():units=64#RNN状态向量长度nepochs=20#训练epochslearning_rate=0.001model=MyRNN(units)#创建模型#装配model.compile(optimizer=optimizers.Adam(learning_rate),loss=losses.BinaryCrossentropy(),metrics=['accuracy'],experimental_run_tf_function=False)#训练和验证model.fit(db_train,epochs=epochs,validation_data=db_test)#测试model.evaluate(db_test)if __name__=='__main__':main()
RNN情感分类问题实战相关推荐
- 深度学习之循环神经网络(5)RNN情感分类问题实战
深度学习之循环神经网络(5)RNN情感分类问题实战 1. 数据集 2. 网络模型 3. 训练与测试 完整代码 运行结果 现在利用基础的RNN网络来挑战情感分类问题.网络结构如下图所示,RNN网络共两 ...
- PyTorch-09 循环神经网络RNNLSTM (时间序列表示、RNN循环神经网络、RNN Layer使用、时间序列预测案例、RNN训练难题、解决梯度离散LSTM、LSTM使用、情感分类问题实战)
PyTorch-09 循环神经网络RNN&LSTM (时间序列表示.RNN循环神经网络.RNN Layer使用.时间序列预测案例(一层的预测点的案例).RNN训练难题(梯度爆炸和梯度离散)和解 ...
- 深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战
深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战 1. LSTM模型 2. GRU模型 前面我们介绍了情感分类问题,并利用SimpleRNN模型完成了情感分类问题的实战,在介绍完更为强 ...
- tensorflow2.0 循环神经网络--情感分类实战
tensorflow2.0 循环神经网络–情感分类实战代码 本文主要是情感分类单层实战RNN Cell代码 import os import numpy as np import tensorflow ...
- 情感分类模型介绍CNN、RNN、LSTM、栈式双向LSTM
情感分类模型介绍CNN.RNN.LSTM.栈式双向LSTM 1.文本卷积神经网络(CNN) 卷积神经网络经常用来处理具有类似网格拓扑结构(grid-like topology)的数据.例如,图像可以视 ...
- 使用循环神经网络(RNN)实现影评情感分类
最近由于做论文的补充实验,需要在rnn上做一下算法验证.找了一下这个博客写的挺好的,但是也有一些bug,暂时先记录一下. 使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环 ...
- 中文文本情感分类实战(weibo_senti_100k为数据集)
中文文本情感分类 数据准备 加载数据集 搭建模型结构 训练脚本的搭建 测试脚本的编写 数据准备 使用jieba分词 data_processing.py import jiebadata_path = ...
- 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)
复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...
- NLP学习笔记-循环神经网络RNN、情感分类、LSTM(二)
循环神经网络和自然语言处理介绍 1. 文本的tokenization 1.1 概念和工具的介绍 tokenization就是通常所说的分词,分出的每一个词语我们把它称为token. 常见的分词工具很多 ...
最新文章
- 【模型解读】浅析RNN到LSTM
- 对Javascript 类、原型链、继承的理解
- [易学C#]C#3.0语言新特性之扩展方法
- Tomcat核心架构和启动流程解析
- pythonweb接口优化_记一次flask web接口速度优化
- 存不存行李寄存平台_行李寄存柜和行李寄存平台的区别
- 『paddle』paddleclas 学习笔记:图像识别
- Torch not compiled with CUDA enabled 解决办法
- python计算实例_python实例: 税率计算
- 让瓶子里的小人跟你互动,它是怎么做到的?
- 信息系统项目管理师:信息、信息化、信息系统、信息系统开发方法
- python tk下拉列表_Python 窗体(tkinter)下拉列表框(Combobox)实例
- 出现java.sql.SQLException: Subquery returns more than 1 row错误的原因,解决方法
- 【洛谷】P1150 Peter的烟(配数学证明)
- ubuntu下修复U盘并格式化
- 数据库运维之数据库备份的多种方法
- 同样是模拟高清,谁才是真正的AHD?汽车OEM选型应慎重
- 学习生物信息学的理由
- css html自定义属性,是时候开始用 CSS 自定义属性了
- #软件# focusky动画演示大师