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(&…

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

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

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

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

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

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

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

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

【Leetcode】八大排序

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

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

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

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

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

模拟实现链表的功能

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

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

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

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

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

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

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

【Linux】shell基础,shell脚本

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

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

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

【stomp 实战】spring websocket 接收消息源码分析

后台消息的发送过程,我们通过spring websocket用户消息发送源码分析已经了解了。我们再来分析一下后端接收消息的过程。这个过程和后端发送消息过程有点类似。 前端发送消息 前端发送消息给服务端的示例如下: 发送给目的/app/echo一个消息。 //主动发…

科林算法_3 图

一、图论基础 多对多的关系 定义&#xff1a;G(V,E) Vertex顶点 Edge边 顶点的集合V{v1,v2} 边的结合E{(v1,v2)} 无向图(1,2) 有向图<1,2> 依附&#xff1a;边(v1,v2)依附于顶点v1,v2 路径&#xff1a;&#xff08;v1,v2)(v2,v3) 无权路径最短&#xff1a;边最少…

程序员不会告诉老板的那些神器

目录 1. 持续集成工具&#xff1a;CruiseControl&#xff08;简称CC&#xff09; 2. 代码风格、质量检查工具&#xff1a;StyleCop 3.AI工具 3.1 AI助力编写开发日报 3.2 AI助力编写普适性代码 3.3 AI助力生成代码注释 3.4 AI助力重构代码去掉“坏味道” 3.5 AI助力…

【小白的大模型之路】基础篇:Transformer细节

基础篇&#xff1a;Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…

渗透之sql注入---宽字节注入

目录 宽字节注入原理&#xff1a; 实战&#xff1a; 源码分析&#xff1a; 开始注入&#xff1a; 找注入点&#xff1a; 注入数据库名&#xff1a; 注入表名&#xff1a; 注入列明&#xff1a; 注入具体值&#xff1a;http://sqli-labs:8084/less-32/?id-1%df%27unio…

luceda ipkiss教程 66:金属线的钝角转弯

案例分享&#xff1a;金属线的135度转弯&#xff1a; 所有代码如下&#xff1a; from si_fab import all as pdk import ipkiss3.all as i3 from ipkiss.geometry.shape_modifier import __ShapeModifierAutoOpenClosed__ from numpy import sqrtclass ShapeManhattanStub(__…