深度学习-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,它的输入和输出是互相独立的.但有些时候,后续的输出和前面的内容是相关的.比如,我是中 ...
最新文章
- Pymol(1.8.6)作图技巧之cartoon和surface镶嵌模型
- Windbg学习 (0x0013) 扩展命令-SOS
- 繁星代码生成器0.91版 【视频】
- Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta
- Student学生管理系统
- win10批处理改计算机名和ip地址,win10系统修改计算机IP地址的操作方法
- 【spring源码学习】spring的aop目标对象中进行自我调用,且需要实施相应的事务定义的解决方案...
- [转载]Memcached缓存服务的简单安装
- 计算机图形学研究与应用的最新进展,关于计算机图形学的发展及应用探究
- 现代通信原理A.1-a:仿真确定信号波形与频谱(Matlab版)
- IDEA 如果修改工作区的主题 也就是黑色背景和白色背景
- QTreeWidget使用
- postgis 栅格数据_postGIS教程
- 使用豆瓣源安装Django
- 一个优秀开发者如何才能变得伟大?
- 百度地图AK申请流程
- 面试时如何回答面试官的问题
- 老男孩-Python之路,Day2 - Python基础2
- 全文标明引文报告html,知网查重全文标明引文是什么意思
- ArcGis For JavaScript API Drawing Tool (绘图工具又称框选地图)
热门文章
- sql2008安装包_数据库SQL2008下载与安装图文详解
- CDATA和转义字符
- PHP判断上传文件类型
- java file类详解_Java File类详解及IO介绍及使用
- python小数乘法_Polymorph:支持几乎所有现有协议的实时网络数据包操作框架
- linux 实时 网口 速率_Linux 命令行网络端口速度测试
- 传智学员信息登记表html代码_IT兄弟连 HTML5教程 HTML5文字版面和编辑标签 使用HTML表格...
- goland go test 多个文件_这个代码怎么会编译不通过?Goland 新手常见问题解决:GOPATH 和 Go Modules 编译不成功...
- 计算机网络实验步骤华北电力大学,华北电力大学网络管理实验
- 【Centos 8】【Centos 7】腾讯云服务器 安装 docker