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情感分类问题实战相关推荐

  1. 深度学习之循环神经网络(5)RNN情感分类问题实战

    深度学习之循环神经网络(5)RNN情感分类问题实战 1. 数据集 2. 网络模型 3. 训练与测试 完整代码 运行结果  现在利用基础的RNN网络来挑战情感分类问题.网络结构如下图所示,RNN网络共两 ...

  2. PyTorch-09 循环神经网络RNNLSTM (时间序列表示、RNN循环神经网络、RNN Layer使用、时间序列预测案例、RNN训练难题、解决梯度离散LSTM、LSTM使用、情感分类问题实战)

    PyTorch-09 循环神经网络RNN&LSTM (时间序列表示.RNN循环神经网络.RNN Layer使用.时间序列预测案例(一层的预测点的案例).RNN训练难题(梯度爆炸和梯度离散)和解 ...

  3. 深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战

    深度学习之循环神经网络(11)LSTM/GRU情感分类问题实战 1. LSTM模型 2. GRU模型  前面我们介绍了情感分类问题,并利用SimpleRNN模型完成了情感分类问题的实战,在介绍完更为强 ...

  4. tensorflow2.0 循环神经网络--情感分类实战

    tensorflow2.0 循环神经网络–情感分类实战代码 本文主要是情感分类单层实战RNN Cell代码 import os import numpy as np import tensorflow ...

  5. 情感分类模型介绍CNN、RNN、LSTM、栈式双向LSTM

    情感分类模型介绍CNN.RNN.LSTM.栈式双向LSTM 1.文本卷积神经网络(CNN) 卷积神经网络经常用来处理具有类似网格拓扑结构(grid-like topology)的数据.例如,图像可以视 ...

  6. 使用循环神经网络(RNN)实现影评情感分类

    最近由于做论文的补充实验,需要在rnn上做一下算法验证.找了一下这个博客写的挺好的,但是也有一些bug,暂时先记录一下. 使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环 ...

  7. 中文文本情感分类实战(weibo_senti_100k为数据集)

    中文文本情感分类 数据准备 加载数据集 搭建模型结构 训练脚本的搭建 测试脚本的编写 数据准备 使用jieba分词 data_processing.py import jiebadata_path = ...

  8. 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)

    复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...

  9. NLP学习笔记-循环神经网络RNN、情感分类、LSTM(二)

    循环神经网络和自然语言处理介绍 1. 文本的tokenization 1.1 概念和工具的介绍 tokenization就是通常所说的分词,分出的每一个词语我们把它称为token. 常见的分词工具很多 ...

最新文章

  1. 【模型解读】浅析RNN到LSTM
  2. 对Javascript 类、原型链、继承的理解
  3. [易学C#]C#3.0语言新特性之扩展方法
  4. Tomcat核心架构和启动流程解析
  5. pythonweb接口优化_记一次flask web接口速度优化
  6. 存不存行李寄存平台_行李寄存柜和行李寄存平台的区别
  7. 『paddle』paddleclas 学习笔记:图像识别
  8. Torch not compiled with CUDA enabled 解决办法
  9. python计算实例_python实例: 税率计算
  10. 让瓶子里的小人跟你互动,它是怎么做到的?
  11. 信息系统项目管理师:信息、信息化、信息系统、信息系统开发方法
  12. python tk下拉列表_Python 窗体(tkinter)下拉列表框(Combobox)实例
  13. 出现java.sql.SQLException: Subquery returns more than 1 row错误的原因,解决方法
  14. 【洛谷】P1150 Peter的烟(配数学证明)
  15. ubuntu下修复U盘并格式化
  16. 数据库运维之数据库备份的多种方法
  17. 同样是模拟高清,谁才是真正的AHD?汽车OEM选型应慎重
  18. 学习生物信息学的理由
  19. css html自定义属性,是时候开始用 CSS 自定义属性了
  20. #软件# focusky动画演示大师

热门文章

  1. Linux系统中创建虚拟环境详解
  2. Tree-Structured LSTM模型
  3. OpenCV DNN支持的对象检测模型
  4. 基于opencv实战眼睛控制鼠标
  5. 第6章——广度优先搜索
  6. Python3经典100例(③)
  7. WdatePicker 日历控件的onchange事件无作用
  8. Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody
  9. Arc Engine 中添加气泡提示框
  10. 通过案例学功能 自定义监控功能初探