TensorFlow2实战-系列教程9:RNN文本分类1

🧡💛💚TensorFlow2实战-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Jupyter Notebook中进行
本篇文章配套的代码资源已经上传

1、文本分类任务

1.1 文本分类

  • 数据集构建:影评数据集进行情感分析(分类任务)
  • 词向量模型:加载训练好的词向量或者自己去训练一个词向量模型都可以
  • 序列网络模型:训练RNN模型进行识别

在这里插入图片描述

  • 数据集构建实际上就是把文本转换为数字组成的向量,因为计算机是不认识文字的,它只认识数字,构建数据集的过程中就是对文本数据进行预处理。
  • 词向量模型就是把词映射到向量
  • 序列网络模型就是实例化一个模型,去训练出一个结果,用TensorFlow2版本是非常简单的,有很多现成的工具直接去调用

1.2 RNN文本分类

RNN模型所需数据解读:在这里插入图片描述
如图所示,RNN输入的是一个序列 X 0 X_0 X0 X 1 X_1 X1 X 2 X_2 X2、…、 X t X_t Xt对应的就是一个词解码的向量,一个词对应的向量可能是一个(1,300)的0-1之间的数值,也就是说 X 0 X_0 X0的维度就是(1,300)

RNN模型数据维度:[batch_size,max_length,word2vec]
batch_size:表示模型的输入批次大小
max_length:表示最大句子长度,因为必须安装最长的句子来算长度,短的可以填充0
word2vec:表示一个词对应的向量维度,这里就是300

2、数据介绍

在这里插入图片描述
如图所示,这是项目的训练数据,每一条数据就是一段电影的评语,而前面的数字就代表这个文本对应的分类类别,0/1两个类别的意义就是对电影的正面和负面评价。
在这里插入图片描述
其中,包含3个文件,train.txt是训练数据一共有25000条数据,test.txt是测试数据一共有25000条数据

3、加载项目数据

import os
import warnings
warnings.filterwarnings("ignore")
import tensorflow as tf
import numpy as np
import pprint
import logging
import time
from collections import Counter
from pathlib import Path
from tqdm import tqdm
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.imdb.load_data()

第一次执行这段代码,会进行下载:

Downloading data from
https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz
17464789/17464789 [==============================] - 2s 0us/step

imdb就是一个影评的数据集,一般下载后的路径会在这个路径中:

C:\Users\admin.keras\datasets

x_train.shape

打印一下shape值:
(25000,)

一共有25000条数据

x_train[0]

将第一条数据打印出来:

[1, 13, 586, 851, 14, 31, 60, 23, 2863, 2364, 314]

因为这里的数据是直接从TensorFlow的keras的datasets工具包中导入下载的,已经直接帮我们将词转换成索引了,也就是说前面的
[1, 13, 586, 851, 14, 31, 60, 23, 2863, 2364, 314]和这句话 i wouldn’t rent this one even on dollar rental night是等价的关系

def sort_by_len(x, y):
    x, y = np.asarray(x), np.asarray(y)
    idx = sorted(range(len(x)), key=lambda i: len(x[i]))
    return x[idx], y[idx]

定义一个将文本数据按照文本长度大小进行排序的函数,最后返回排序后的数据和标签

x_train, y_train = sort_by_len(x_train, y_train)
x_test, y_test = sort_by_len(x_test, y_test)

def write_file(f_path, xs, ys):
    with open(f_path, 'w',encoding='utf-8') as f:
        for x, y in zip(xs, ys):
            f.write(str(y)+'\t'+' '.join([idx2word[i] for i in x][1:])+'\n')

write_file('./data/train.txt', x_train, y_train)
write_file('./data/test.txt', x_test, y_test)
  1. 应用排序函数,对训练集进行排序
  2. 对验证集进行排序
  3. 定义一个将文本数据写入文件的函数
  4. 以写入模式打开文件
  5. 遍历 xs 和 ys 中的元素
  6. 将 y 和通过 idx2word 字典转换的 x 写入文件
  7. 使用 write_file 函数将处理后的训练集和测试集数据写入文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/357635.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 206 反转链表

反转链表 准备工作1)ListNode基本结构2)初始化ListNode集合 解法一:遍历创建新节点解法二:两组List,面向对象操作解法三:递归调用解法四:直接移动解法五:解法二的面向过程 Leetcode …

spring cloud activiti 审批流的用法

demo的搭建及使用 1、创建activiti审批流需要安装bpmn插件,新的idea版本支持的这个bpmn插件只有下图这个,并不好用,所以我这里使用eclipse来创建bpmn流程 eclipse的连接如下:链接:https://pan.baidu.com/s/1mSoKprN-…

基于Java SSM框架实现药品销售系统项目【项目源码+论文说明】

基于java的SSM框架实现药品销售系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个药品销售系统 ,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述药品销…

原生table样式

HTML <div><table style"width: 100%;"><thead><tr><th style"width:25%;">董事会</th><th style"width:25%;">监事会</th><th style"width:25%;">股东</th><th sty…

【Vue】前端项目引入阿里图标

【Vue&React】前端项目引入阿里图标 1、登录自己的iconfont-阿里巴巴矢量图标库&#xff0c;把需要的图标加入到自己的项目中去&#xff1b;2、加入并进入到项目中去选择Font class 并下载到本地3、得到的文件夹如下4. 把红框中的部分粘贴到自己的项目中&#xff08; stati…

CRG设计之复位

1. 前言 CRG(Clock and Reset Generation&#xff0c;时钟复位生成模块) 模块扮演着关键角色。这个模块负责为整个系统提供稳定可靠的时钟信号&#xff0c;同时在系统上电或出现故障时生成复位信号&#xff0c;确保各个模块按预期运行。简而言之&#xff0c;CRG模块就像是SoC系…

nginx无法启动,win10占用80端口 (注册表方式解决)

参考&#xff1a;https://blog.csdn.net/qq_39523111/article/details/128853509 改为4 重启后 不再占用 pid 不是4了 已经变为nginx了 改为0 没起作用

蓝桥杯2024/1/26笔记-----基于PCF8591的电压采集装置

功能实现要求&#xff1a; 每次建好工程文件夹&#xff0c;里边包含User&#xff08;放工程文件&#xff0c;mian.c&#xff0c;可以在这里写如同我这个文章的文本文档&#xff09;、Driver&#xff08;存放底层文件如Led.c&#xff0c;Led.h等&#xff09; 新建的工程先搭建框…

STM32——中断系统和外部中断EXTI

一、中断 1.1中断系统 中断系统是管理和执行中断的逻辑结构&#xff1b; 1.2中断 系统在执行主程序过程中&#xff0c;出现了特定的触发条件&#xff08;触发源&#xff09;&#xff0c;系统停止执行当前程序&#xff0c;转而去执行中断程序&#xff0c;执行完毕后&#xf…

windows系统下启动redis命令

windows系统下启动redis命令 进入redis安装目录 cd redis 输入 redis-server.exe redis.windows.conf 启动redis命令&#xff0c;看是否成功 可能会启动失败&#xff0c;报[1696] 30 Jan 09:46:07.518 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No erro…

云计算底层技术、磁盘技术揭秘虚拟化管理、公有云概述

查看本机是否具备虚拟化支持 硬件辅助虚拟化 处理器里打开 虚拟化Inter VT-x/EPT 或AMD-V 构建虚拟化平台工具软件包 yum 与 dnf Yum和DNF都是用于管理Linux系统中的软件包的工具&#xff0c;但它们在许多方面存在一些差异。以下是一些可能的区别&#xff1a; 依赖解…

运行VUE提示找不到模块validate-engines.js...

原来好好的&#xff0c;突然提示找不到模块validate-engines.js&#xff0c;CMD命令行输入npm -v不是内部或外部命令&#xff0c;node -v可以查看到版本号。 解决&#xff1a; 1. 卸载nodejs&#xff0c;重新下载安装文件&#xff1a;下载nodejs 2. 到目录&#xff1a;C:\Us…

成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘

成功解决AttributeError: ‘str’ object has no attribute ‘decode’. &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;报错分析及解决方案&#x1f333;&#x1f333;参考文章&#x1f333;&#x1f333;结尾&#x1f333; &#x1f333;引…

Chiplet,汽车“芯”风向

异构集成、高速互联、算力灵活可扩展正在成为新一轮汽车芯片竞争的焦点。尤其是随着以ChatGPT为代表的大数据、大模型产品在车端的落地&#xff0c;对于芯片的要求还在持续提升。 本周&#xff0c;12家日本汽车制造商&#xff08;包括丰田、日产、本田等&#xff09;、零部件制…

Redis 面试题 | 20.精选Redis高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

三、防御保护---防火墙安全策略篇

三、防御保护---防火墙安全策略篇 一、什么是安全策略二、安全策略的组成1.匹配条件2.动作3.策略标识 三、防火墙的状态检测和会话表1.会话表2.状态检测技术 四、ASPF--隐形通道五、用户认证1.用户认证的分类2.认证方式3.认证策略4.认证域 一、什么是安全策略 传统的包过滤防火…

ORBSLAM3 运行流程 以rgbd_tum.cc函数为例进行分析

一、运行 使用的是D435i相机自己录制的数据。 运行命令&#xff1a; ./Examples/RGB-D/rgbd_tum /opt/vslam/ORB_SLAM3_detailed_comments-dense_map_new/Vocabulary/ORBvoc.txt /opt/vslam/ORB_SLAM3_detailed_comments-dense_map_new/Examples/RGB-D/TUM1.yaml /opt/vsl…

医美诊疗前后要注意的八大诀窍

【记者许家源/综合报导】 随着年龄的增长&#xff0c;许多人都想保持年轻美丽&#xff0c;因此寻求医美诊疗的帮助。然而&#xff0c;进入医美诊所后&#xff0c;你可能会发现&#xff0c;想要打肉毒、除毛等&#xff0c;实际花费和广告中的金额相差甚远。为了避免上当受骗&am…

C# 使用WMI监听进程的启动和关闭

写在前面 Windows Management Instrumentation&#xff08;WMI&#xff09;是用于管理基于 Windows 操作系统的数据和操作的基础结构。具体的API可以查看 WMI编程手册。 WMIC 是WMI的命令行管理工具&#xff0c;使用 WMIC&#xff0c;不但可以管理本地计算机&#xff0c;还可…

Layui + Echarts 5.0

Layui 怎么整合最新版本的 Echarts 5.0&#xff0c;Echarts 4 升级到 5后&#xff0c;有了很大改变&#xff0c;新的配置项4是无法兼容的&#xff0c;所以想要使用新的功能&#xff0c;都需要升级&#xff01; 新建一个echarts.js文件 layui.define(function (exports) {// 这…