深度学习-Tensorflow2.2-RNN循环神经网络{11}-评论分类-25
什么是RNN?
代码
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import pandas as pd
import os
import re
# 显存自适应分配
gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
for gpu in gpus:tf.config.experimental.set_memory_growth(gpu,True)
gpu_ok = tf.test.is_gpu_available()
print("tf version:", tf.__version__)
print("use GPU", gpu_ok) # 判断是否使用gpu进行训练
读取数据
data = pd.read_csv ("F:/py/ziliao/数据集/Tweets.csv")
data = data[["airline_sentiment","text"]] # 取出需要的列
data_p = data[data.airline_sentiment=="positive"] # 取出需要的评论
data_n = data[data.airline_sentiment=="negative"]
data_n = data_n.iloc[:len(data_p)] # 我们从差评里取出好评这么多数据让数据一致
数据预处理
# 创建新的数据
data = pd.concat([data_n,data_p])
len(data)
# 处理label
# 返回布尔值,把布尔值astype成int类型 赋值给review列
data["review"] = (data.airline_sentiment=="positive").astype("int")
处理评论文本
token = re.compile("[A-Za-z]+|[!?,.()]")# 编写一个正则取出A-Z a-z !?,.()
def reg_text(text):new_text = token.findall(text) # 提取字符new_text = [word.lower()for word in new_text] # 变成小写return new_text
data["text"] = data.text.apply(reg_text) # 字符处理后重新赋值给text
# 提取出文本中的唯一单词
word_set = set()
for text in data.text:for word in text:word_set.add(word)
# 构造一个 英文单词:索引
word_list = list(word_set) # 转换成列表
# 转换成 英文单词:数字索引 把所有数字+1 表示不从0开始数数
word_index = dict((word,word_list.index(word)+1) for word in word_list)
# 对数据集进行转换 如果未匹配到 0作为填充
data_ok = data.text.apply(lambda x:[word_index.get(word,0)for word in x])
max(len(x)for x in data_ok),min(len(x)for x in data_ok) # 查看评论长度
maxlen = max(len(x)for x in data_ok)
# 对所有评论安装最大长度进行填充 填充为0
data_ok = tf.keras.preprocessing.sequence.pad_sequences(data_ok.values,maxlen=maxlen)
搭建循环神经网络
model = tf.keras.Sequential() # 顺序模型
# 最大单词格式 , 密集向量长度 , 评论的长度
model.add(tf.keras.layers.Embedding(max_word,50,input_length=maxlen))
model.add(tf.keras.layers.LSTM(64)) # 添加LSTM层 隐藏单元 64个 #超参数
model.add(tf.keras.layers.Dense(1,activation="sigmoid")) # 二分类激活函数sigmoid
# 编译
model.compile(optimizer="adam",loss="binary_crossentropy",metrics=["acc"])
# 训练
model.fit(data_ok,label, # 训练数据及labelepochs=10, # 训练步数batch_size=128, # 每次训练128个数据validation_split=0.2 # 从训练集中分割出20%作为测试集
)
深度学习-Tensorflow2.2-RNN循环神经网络{11}-评论分类-25相关推荐
- 深度学习 十四讲 循环神经网络例子--名字分类
任务:根据输入的不同名字,分出所属国家 模型如下 数据两列:名字,国家 实现过程 准备数据 用ASCII表作为字典长度,字典长度为128 实际上这个77对应的是一个one_hot向量,这个向量一共有1 ...
- 深度学习小白专场之循环神经网络和递归神经网络
深度学习小白专场之循环神经网络和递归神经网络 全连接神经网络和卷积神经⽹网络,都只能单独的去处理单个的输入,且前后的输入之间毫无关系.但是在一些任务中,我们需要更好的去处理序列的信息,即前后的输⼊之间 ...
- 第七章:Tensorflow2.0 RNN循环神经网络实现IMDB数据集训练(理论+实践)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/LQ_qing/article/deta ...
- 动手学深度学习(文本预处理+语言模型+循环神经网络基础)
文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 分词 建立字典,将每个词映射到一个唯一的索引(index) ...
- 【动手学深度学习】李沐——循环神经网络
本文内容目录 序列模型 文本预处理 语言模型和数据集 循环神经网络 RNN的从零开始实现 RNN的简洁实现 通过时间反向传播 门控循环单元GRU 长短期记忆网络(LSTM) 深度循环神经网络 双向循环 ...
- 《Python 深度学习》6.3 循环神经网络的高级用法 (代码)
# 6.3 循环神经网络的高级用法 本节将介绍提高循环神经网络的性能和泛化能力的三种高级技巧.学完本节,你将会掌握 用 Keras 实现循环网络的大部分内容.我们将在温度预测问题中介绍这三个概念.在这 ...
- 动手学深度学习:6.4 循环神经网络的从零开始实现
6.4 循环神经网络的从零开始实现 在本节中,我们将从零开始实现一个基于字符级循环神经网络的语言模型,并在周杰伦专辑歌词数据集上训练一个模型来进行歌词创作.首先,我们读取周杰伦专辑歌词数据集: imp ...
- 深度学习笔记七:循环神经网络RNN(基本理论)
参考: RECURRENT NEURAL NETWORKS TUTORIAL, PART 1 – INTRODUCTION TO RNNS A Critical Review of Recurrent ...
- July深度学习之RNN循环神经网络
RNN循环神经网络 一.简介 首先,为什么有BP神经网络和CNN,还要提出RNN? 因为传统的神经网络,包括CNN,它的输入和输出是互相独立的.但有些时候,后续的输出和前面的内容是相关的.比如,我是中 ...
最新文章
- 03_NoSQL数据库之Redis数据库:list类型
- JavaScript Array reverse 方法:颠倒数组中元素的顺序
- 安卓如何运行python_如何在android上运行Python代码?
- 马斯克超级计算机玩吃鸡,在50亿美元打造的计算机上运行《绝地求生大逃杀》会怎样?...
- html页面提交数据,利用servlet接收数据并写进xml中
- 史上最全 Python Re 模块讲解(三)
- 总结运行SSIS包的几种方式
- 现代c++之列表初始化/统一初始化
- 编译使用CEF2623遇到的错误解决办法
- JavaScript Array(数组)对象
- Windows api实现桌面任务栏隐藏\显示
- 二、es的可视化工具:Kibana及练习
- 长期不上班,人会废掉吗?
- mysql 1032 1062_MySQL 1032和1062跳过错误总结
- Android Studio中模拟器如何输入中文、将模拟器语言设置为中文
- 发送消息(SendMessage)常识普及
- (转)(异常分析) org.hibernate.MappingException: entity class not found
- 高性能Excel操作工具
- 初学者用Eclipse和IDEA哪个好用一点?
- Selenium学习(七) selenium IDE命令之 store系列详解
热门文章
- java 处理表单_java – 处理multipart / form-data输入
- js函数 every some map ()=a+b;
- android后台时不显示,Android后台下载问题
- ansa打开catia文件_关于CATIA文件格式的那些事儿
- 卸载mysql 安装_MySQL萌新第一季 第二话
- jq点击按钮获取php的值删除,通过jquery怎么移除点击事件
- Android无法运行AVD,android – 无法运行AVD(模拟器)
- 二等水准测量记录数据_公路水准测量培训道路放样测量学习
- Linux 利用yum源安装subversion(svn)客户端
- 启用Windows Server 2012的远程桌面