Tensorflow2.0笔记 - 循环神经网络RNN做IMDB评价分析

        本笔记记录使用SimpleRNNCell做一个IMDB评价系统情感二分类问题的例子。

import os
import time
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics, Inputos.environ['TF_CPP_MIN_LOG_LEVEL']='2'
#tf.random.set_seed(12345)
#np.random.seed(22)
tf.__version__#取常见的10000个单词
total_words = 10000
#句子最长的单词数量设置为80
max_review_len = 80
#embedding设置为100,表示每个单词用100维向量表示
embedding_len = 100
#加载IMDB数据集
(x_train,y_train), (x_test, y_test) = datasets.imdb.load_data(num_words = total_words)
#对训练数据和测试数据的句子进行填充或截断
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=max_review_len)
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=max_review_len)#构建数据集
batchsize = 128
db_train = tf.data.Dataset.from_tensor_slices((x_train, y_train))
db_train = db_train.shuffle(1000).batch(batchsize, drop_remainder=True)
db_test = tf.data.Dataset.from_tensor_slices((x_test, y_test))
db_test = db_test.batch(batchsize, drop_remainder=True)#x_train包含25000个句子,每个句子包含80个单词,y_train标签为1表示好评,0表示差评
print('x_train: shape - ', x_train.shape, ' y_train: max/min -', tf.reduce_max(y_train).numpy(), '/', tf.reduce_min(y_train).numpy())
print('x_test: shape - ', x_test.shape)class MyRNN(keras.Model):#units:state的维度def __init__(self, total_words, embedding_len, max_review_len, units):super(MyRNN, self).__init__()#初始的序列状态初始化为0(第0时刻的状态)self.state0 = [tf.zeros([batchsize, units])]self.state1 = [tf.zeros([batchsize, units])]#embedding层,将文本转换为embedding表示#[b, 80] => [b, 80, 100]self.embedding = layers.Embedding(total_words, embedding_len, input_length=max_review_len)#[b, 80, 100] , units: 64 - 转换为64维的state [b, 64]self.rnn_cell0 = layers.SimpleRNNCell(units, dropout=0.2)self.rnn_cell1 = layers.SimpleRNNCell(units, dropout=0.2)#全连接层 [[b, 64] => [b, 1]self.outlayer = layers.Dense(1)#inputs: [b, 80] def call(self, inputs, training=None):x = inputs#做embedding,[b,80] => [b, 80, 100]x = self.embedding(x)#做RNN cell计算#[b, 80, 100] => [b,  64]#遍历句子中的每个单词# word: [b, 100]state0 = self.state0state1 = self.state1for word in tf.unstack(x, axis=1):#h1 = x*w_xh + h0*w_hhout0, state0 = self.rnn_cell0(word, state0, training)out1, state1 = self.rnn_cell1(out0, state1)#循环完毕后,得到的out为[b, 64],表示每个句子最终得到的状态x = self.outlayer(out1)#计算最终评价结果prob = tf.sigmoid(x)return probdef main():units = 64epochs = 15lr = 0.001model = MyRNN(total_words, embedding_len, max_review_len, units)model.compile(optimizer = optimizers.Adam(lr), loss = tf.losses.BinaryCrossentropy(),metrics=['accuracy'])model.fit(db_train, epochs=epochs, validation_data=db_test)model.evaluate(db_test)if __name__ == '__main__':main()

运行结果:

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.5.9

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->resize(1000,600);this->setFixedSize(1000,600);//设置按钮大小位置完成btn1 new QPushButton(&…

大文件分块上传

断点续传 断点续传需要为每个分块加md5值&#xff0c;如果用户取消上传&#xff0c;可以知道那些分块已经上传了 切块上传 只要校验整个文件的完整性就好 前端代码示例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

[AIGC] 《MyBatis-Plus 结合 Spring Boot 的动态数据源介绍及 Demo 演示》

在现代的 Web 应用开发中&#xff0c;Spring Boot 已经成为了一种流行的框架选择。而 MyBatis-Plus 则为 MyBatis 框架提供了更强大的功能和便利。当它们结合使用时&#xff0c;动态数据源的运用变得更加简单和高效。 动态数据源的概念允许我们在运行时根据不同的条件或需求选…

【已解决】直接在远程新增文件本地再提交报Merge branch ‘master‘ of

【已解决】直接在远程新增文件本地再提交报Merge branch ‘master’ of … 1、问题产生背景 直接在远程仓库新建了md文件&#xff0c;本地库修改了文件已添加到暂存区之后再提交报错 2、分析 远程新建文件产生变更&#xff0c;版本号与本地拿到的不一致&#xff0c;本地再次提…

tf2使用savemodel保存之后转化为onnx适合进行om模型部署

tf2使用savemodel保存之后转化为onnx适合进行om模型部署 tf保存为kears框架h5文件将h5转化为savemodel格式&#xff0c;方便部署查看模型架构将savemodel转化为onnx格式使用netrononnx模型细微处理代码转化为om以及推理代码&#xff0c;要么使用midstudio tf保存为kears框架h5文…

中国M2总量是两个美国,意味着什么

中国人民银行公布数据&#xff1a;2月末&#xff0c;我国广义货币(M2)余额299.56万亿元&#xff0c;同比增长8.7%。 2000年末我国M2仅13万亿元&#xff0c;2013年3月达到100万亿元&#xff1b;2020年1月突破200万亿元&#xff1b;2024年2月接近300万亿元&#xff0c; 与美欧日…

CPU的星际穿越——“三维”解析“二维”之谜

文章目录 写在前面为什么三维的CPU能执行二维的指令二维指令是三维机器的抽象而已计算机所有东西都是三维的降维抽象没有软件没有指令二维到三维的总结操作系统的重塑 写在前面 以下是自己关于CPU为何能执行指令的迷惑的抽丝破茧的解答—— 困扰我的一个的问题之CPU的星际穿越…

Linux下CPU频率和核心数的锁定设置

linux下cpu频率的锁定设置 查询cpu相关信息 使用工具为&#xff1a;cpufrequtils sudo apt-get install cpufrequtils使用 cpufreq-info 命令来查看当前的 CPU 频率以及支持的频率范围 cpufreq-info设置某个CPU核心的频率 如果你想将 CPU 频率锁定在一个特定的值&#xff0…

【VLAN聚合和MUX VLAN的配置总结】

vlan聚合&#xff1a; 在一个物理网络内用多个VLAN隔离广播域&#xff0c;并将这些Sub-VLAN聚合成一个逻辑的VLAN&#xff08;称为Super-VLAN&#xff09;&#xff0c; 这些Sub-VLAN共用同一个IP子网和缺省网关&#xff0c;进而达到节约IP地址资源的目的。 案例&#xff1a;某…

【C++】每日一题 199. 二叉树的右视图

给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 思路&#xff1a; 可以使用广度优先搜索&#xff08;BFS&#xff09;来遍历二叉树&#xff0c;但是在遍历过程中只记录每一层最右…

【Leetcode】八大排序

总述 插入排序&#xff1a;直接插入排序&#xff1b;希尔排序&#xff1b; 选择排序&#xff1a;简单选择排序&#xff1b;堆排序&#xff1b; 交换排序&#xff1a;冒泡排序&#xff1b;快速排序&#xff1b; 归并排序&#xff1b; 桶排序/基数排序&#xff1b; 直接插入排序 …

【软件工程】期末复习超全整理!!!

软件工程期末复习整理 软件工程大纲以及阅读说明用例图用例图例题1 用例文档用例文档例题1用例文档例题2 活动图活动图例题1活动图例题2活动图例题3 类图类图中的关系类图例题1类图例题2 顺序图顺序图例题1顺序图 例题2顺序图例题3顺序图--分析类顺序图例题4顺序图例题5 状态图…

重学java 33.API 4.日期相关类

任何事&#xff0c;必作于细&#xff0c;也必成于实 —— 24.5.9 一、Date日期类 1.Date类的介绍 1.概述: 表示特定的瞬间,精确到亳秒 2.常识: a.1000毫秒 1秒 b.时间原点:1970年1月1日 0时0分0秒(UNIX系统起始时间),叫做格林威治时间,在0时区上 c.时区:北京位于东八区,一个时区…

模拟实现链表的功能

1.什么是链表&#xff1f; 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 实际中链表的结构非常多样&#xff0c;以下情况组合起来就有8种链表结构&#xff1a; 单向或者双向 带头或者不带头 …

CTF-catcat-new

先判断这个题目是不是关于任意文件读取漏洞&#xff0c;读一个Linux都有的文件/etc/passwd http://61.147.171.105:60014/info?file../../../../../etc/passwd ../../../../../etc/passwd 是一个相对路径&#xff0c;用于访问文件系统中的 /etc/passwd 文件。 通过抓包发现R…

车载测试到底怎么样?真实揭秘!

什么是车载智能系统测试&#xff1f; 车载智能系统&#xff0c;是汽车智能化重要的组成部分&#xff0c;由旧有的车载资通讯系统结合联网汽车技术所演进而来&#xff0c;随着软硬件技术的不断进步&#xff0c; 让车载智能系统拥有强大的运算能力及多元化的应用功能。 车载智能…

苹果iPad M4:Console级别图形和AI强大功能

苹果iPad M4&#xff1a;Console级别图形和AI强大功能 Apple近日发布了最新的M4芯片&#xff0c;旨在为iPad Pro系列带来明显的性能提升和电池续航时间延长。在本篇报道中&#xff0c;我们将详细介绍M4芯片的特点、性能改进和为创意专业人士带来的影响。 M4芯片的强大功能 …

图解项目管理必备十大管理模型及具体应用建议

心智模型是根深蒂固存在于人们心中&#xff0c;影响人们如何理解这个世界&#xff08;包括我们自己、他人、组织和整个世界&#xff09;&#xff0c;以及如何采取行动的诸多假设、成见、逻辑、规则&#xff0c;甚至图像、印象等。本图通过对心智模型的分类和描述&#xff0c;表…

【Linux】shell基础,shell脚本

Shell Shell是一个用C语言编写的程序&#xff0c;接受用户输入的命令&#xff0c;并将其传递给操作系统内核执行。Shell还负责解释和执行命令、管理文件系统、控制进程&#xff0c;是用户使用Linux的桥梁。Shell既是一种命令语言&#xff0c;又是一种程序设计语言 Shell脚本 Sh…

上位机图像处理和嵌入式模块部署(树莓派4b和c++新版本的问题)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 自己读书的时候是03年&#xff0c;学习c也是差不多04年开始&#xff0c;到现在基本上20年了。这20年过程当中&#xff0c;其实c的语言版本一直是在…