Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究

原文链接:https://tecdat.cn/?p=37634 

本文聚焦于利用马尔可夫递归神经网络(MarkovRNN)结合树库展开建模工作。MarkovRNN 通过整合马尔可夫特性与离散随机变量来深入探索递归神经网络中的随机转换机制,旨在高效处理具有复杂潜在信息的高度结构化序列数据点击文末“阅读原文”获取完整代码数据)。

在该模型中,每个时间步的离散样本均源自参数化的分类分布,且潜在信息的编码取决于所选状态对应的不同状态编码器。

相关视频

一、引言

语言建模在自然语言处理领域至关重要,它对于理解和生成自然语言文本起着关键作用。传统方法在处理复杂数据结构和潜在信息时存在一定局限性,而 MarkovRNN 模型为解决这些问题提供了新的思路。

马尔可夫递归神经网络(MRNN)通过将马尔可夫性质与离散随机变量相结合来探索递归神经网络中的随机转换。提出这个模型是为了处理具有复杂潜在信息的高度结构化的序列数据。在每个时间步,离散样本从参数化的分类分布中抽取,而潜在信息则根据所选状态由不同的状态编码器进行编码。 

97665c8eb111f334f75a7ed77f2817f9.png

二、实验设置

软件环境
采用 Tensorflow 1.4.1 构建和运行模型。

数据集
选用树库作为数据集。数据导入:

from tensorflow.examples.tutorials.mnist import input_dataimport tensorflow as tfimport tensorflow.contrib.slim as slimimport numpy as npimport reader

三、模型构建

(一)配置参数
定义了一个配置类(Config),其中涵盖了模型训练和运行的关键参数,如初始化规模(init\_scale)、最大训练轮数(max\_epoch)、批量大小(batch_size)等。

init\_scale = 0.2max\_epoch = 50max\_max\_epoch = 50batch\_size = 50display\_step = 50lr = 20.0lr\_decay = 0.3embed\_drop = 0.2input_drop = 0.4

(二)数据处理
Input 类负责处理输入数据,对数据的批量大小、时间步数、轮次大小等进行了定义,并实现了输入数据和目标数据的生成。

class Input(object):def \_\_init\_\_(self, config, data, name=None):self.batch\_size = config.batch\_sizeself.num\_steps = config.num\_stepsself.epoch\_size = ((len(data) // self.batch\_size) - 1) // self.num\_stepsself.input\_data, self.targets = reader.ptb\_producer(data, self.batch\_size, self.num_steps, name=name)

(三)模型架构
Model 类构建了核心的 MRNN 模型。在模型初始化过程中,定义了如嵌入层(embedding)、输入(inputs)等变量。例如:

class Model(object):def \_\_init\_\_(self, is\_training, config, data):with tf.device("/cpu:0"):self.embedding = tf.get\_variable("embedding", \[config.vocab\_size, config.input\_size\], dtype=tf.float32)self.inputs = tf.nn.embedding\_lookup(self.embedding, self.data.input\_data)

在不同的作用域(scope)下构建了 MRNN 的复杂结构,同时计算了交叉熵(cross - entropy)、负对数似然(NLL)、熵(entropy)、成本(cost)等重要指标,并定义了训练操作(train_op)等。

四、实验过程与结果

(一)数据准备
读取原始数据(raw\_data),并根据配置(config)和评估配置(eval\_config)创建训练、验证和测试的输入数据(train\_input、valid\_input、test_input)以及对应的模型(m、mvalid、mtest)。

import osraw\_data = reader.ptb\_raw\_data('./data/')train\_data, valid\_data, test\_data, w2id, id2w = raw_dataconfig = Config()

(二)模型训练与评估
利用 TensorFlow 的 Supervisor 管理会话(session)进行模型训练。在每个训练轮次中,根据特定规则调整学习率和温度。训练完成后,进行模型验证与测试。实验结果表明,模型在处理语言建模任务方面表现出一定的性能,最终得到了相应的困惑度(perplexity)值,并绘制了训练和验证的困惑度曲线。

initializer = tf.random\_uniform\_initializer(-config.init\_scale,config.init\_scale)st_input)
``````

83db4e57c6313db597049a27c744cb5b.png

f4b53ccdc1ed3d15f5e75527a9fc883b.png

plt.figure()plt.plot(range(1,len(ppl\_train)+1),ppl\_train,'b')plt.show()plt.figure()plt.plot(range(1,len(ppl\_valid)+1),ppl\_valid,'r')plt.show()

79f75e9fd28764698c9a73da392356e4.png

311e576ae4535943d9b612509fd10e1f.png

149eb066baca3616686008f80b120961.png


点击标题查阅往期内容

792f1208322869bb40d3bea45e11f351.png

Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV,Stochastic Volatility) 模型

outside_default.png

左右滑动查看更多

outside_default.png

01

8db7ea74bcf5dbfd680399dedd6d3ab1.png

02

0d645e1855383e83eee620d61966e1fb.png

03

3e4a512a28e077c59de5a4206c162aab.png

04

22da210e2714cfe18b4a1bad69fe9f25.png

h = np.array(h)print(h.shape)h = np.array(np.split(h,2,3))print(h.shape)z = np.squeeze(np.array(z),\[1,2\])print(z.shape)qz = np.squeeze(np.array(qz),\[1,2\])print(qz.shape)x = np.array(x)print(x.shape)y = np.array(y)print(y.shape)logits = np.squeeze(np.array(logits),\[1,2\])print(logits.shape)

f0ff264e15e68ca1a68a8de58425476a.png

(三)数据可视化
为了进一步分析模型的数据特征,进行了数据可视化操作。

这些可视化操作包括使用t - SNE算法对数据进行降维处理,并将处理后的数据绘制成散点图进行展示,同时还对部分数据的分布进行了图像展示和统计图表展示。

from sklearn.manifold import TSNEstart\_time = time.time()N = 10000# h\_tsne = TSNE(n\_components=2).fit\_transform(h\[:N,1,:\])h\_tsne = TSNE(n\_components=2).fit\_transform(h\[0,:N,0,0,:\])print("time: %f" % (time.time()-start\_time))
``````

f86369bd192567c4eff73d41fdac1dd3.png

N1 = 0N2 = 20step=1000N=10000for i in range(0,N,step):fig = plt.figure(figsize=\[5,5\])plt.subplot(2,1,1)plt.imshow(z\[N1+i:N2+i,:\].T)plt.subplot(2,1,2)plt.imshow(qz\[N1+i:N2+i,:\].T)plt.savefig(URL+'/traj_'+str(i)+'.png')plt.show()

6bdb48bf685721903be5ed7ed790ef71.png

plt.bar(np.arange(config.K), np.sum(z,0)/np.sum(z), alpha=0.8)plt.savefig(URL+'/stat.png')plt.show()

c07da2f92d00ff0ca3011f04770d2ebb.png

ebab4030d97308b2ab858303959ada67.jpeg

本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 

559179c486a5d3f530f5992d967f3db1.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

c63b0bded93e7dcbf73f5ec6af8d0afa.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究》。

点击标题查阅往期内容

Python股票预测:注意力多层Attention RNN LSTM应用

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

1534910d2c4597c8a86a00d71d00eae1.jpeg

2ef9d0544d7d3f10952ac6454d2fce2f.png

d5e6ec1d657ddba572c6357e7e7163c8.png

59037168c049cc2a62d04170b031725f.jpeg

d83adfa8be80770910a8ed082495628e.png

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

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

相关文章

OCR在线识别网站现已上线!

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 由作者亲自开发的ocr识别网站哈哈,暂时汇聚了三十多种验证码模型以及算法,欢迎各路朋友去尝试,网站地址如下 http://gbj5w3.natappfree.cc/ocr 验证码类型包括但…

WORD批量转换器MultiDoc Converter

WORD批量转换器MultiDoc Converter https://www.52pojie.cn/thread-1318745-1-1.html 可批量将doc、docx等文件格式转成doc、docx、pdf、rtf、txt、html、epub等格式。 安装包下载地址:https://wws.lanzouj.com/irvVbiz0pkd 最终下载文件打包地址(未作成…

刘润《关键跃升》读书笔记7

沟通: 想明⽩,说清楚,能接受 团队沟通的正确⽅式可以⽤9个字来概括:想明⽩,说清楚,能接受 (⻅图4-1)想明⽩ 有时经理跟⼈沟通,讲完之后却⽆奈地对员⼯说,你怎…

ubuntu 安装python3 教程

本篇教程,主要介绍如何在Ubuntu上安装python3教程。 1、查看是否有python 在安装前,首先看看自己系统上,是否存在python环境,可能有些系统,默认就安装过python,如果已经有python了,可以直接跳过安装教程。 2、安装步骤 apt update && apt install -y python3 p…

C++ 在项目中使用Git

目录 一:配置邮箱和姓名 二:生成SSH Key 三:git 工作区和状态 四:git log 常用法 五:git diff 常用法 六:git 分支操作 七:git 回溯分支 八:git rebase -i 压缩历史提交…

Java基础 2. Java基础语法

Java基础 2. Java基础语法 文章目录 Java基础 2. Java基础语法2.1. 标识符2.1.1. 标识符的命名规则 :2.1.2. 标识符的命名规范: 2.2. 关键字2.3. 字面量2.3.1. Java中有哪些字面量2.3.2. 加号运算符 2.4. 变量2.5. 二进制2.6. 八进制与十六进制2.7. 原码反码补码2.7.1. byte与b…

【车载开发系列】ParaSoft单元测试环境配置(一)

【车载开发系列】ParaSoft单元测试环境配置(一) ParaSoft单元测试环境配置 【车载开发系列】ParaSoft单元测试环境配置(一)一. 什么是bdf文件二. bdf文件构成三. 新规做成bdf文件四. 导入bdf文件创建测试工程五. 获取编译器信息六. 新增自定义编译器Step1:打开向导Step2:…

【数学建模】2024数学建模国赛经验分享

文章目录 一、关于我二、我的数模历程三、经验总结: 一、关于我 我的CSDN主页:https://gxdxyl.blog.csdn.net/ 2020年7月(大二结束的暑假)开始在CSDN写作: 阿里云博客专家: 接触的领域挺多的&#xff…

元学习之模型诊断元学习(model-agnosticmeta-learning,MAML)

模型诊断元学习(model-agnosticmeta-learning,MAML), 另一个是Reptile。这两个算法都是在 2017 年提出来的,而且都是基于梯度下降法进行优化 的。那我们最常用的学习算法是梯度下降,在梯度下降中&#xff0…

李沐关于大模型应用及职业发展的分享

前几天看了 李沐 在上海交大做的一个 分享 , 主要分享了他对于大模型的一些看法和他个人的经历。 我很喜欢李沐,技术厉害,看起来比较接地气,录制的 课程 也比较容易看懂。 大模型的应用 下面这张图是他对当前大模型应用的看法。…

1. 初识LLM API:环境配置与多轮对话演示

其实AI应用并不是一个什么很高大上的东西,你可以将它当作一个文字的“调库”行为,“调库”只需要知道库名就行了,这里实际也是如此。甚至你只需要知道你想问什么,将你的消息作为输入,就能从大模型得到输出。而这个“库…

【html】新建一个html并且在浏览器运行

以下是一个简单的 HTML 小项目&#xff0c;展示一个包含标题、按钮和点击按钮后弹出提示框的基本页面 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthde…

K8s的Pv和Pvc就是为了pod数据持久化

一、 1.pv&#xff08;persistent volume&#xff09;&#xff1a;是k8s虚拟化的存储资源&#xff0c;实际上就是存储&#xff0c;列如本地的硬盘、网络文件系统&#xff08;Nfs&#xff09;、lvm、RAID、云存储。 2.pvc&#xff1a;pod对存储资源的请求&#xff0c;定义了需…

Linux基础3-基础工具1(什么是工具,yum,vim基础)

目录 一.什么是工具 二.yum 2.1 yum基础 2.2 yum拓展 2.3 rzsz 三.vim基础 四.下章内容 1. vim 插入模式&#xff0c;底行模式&#xff0c;命令模式下详解。vim基础配置 2. gcc/g 基础 一.什么是工具 工具的本质是也是指令。通过工具我们能快速的实现某些功能 二.yum 2.1…

服装|基于Java+vue的服装定制系统(源码+数据库+文档)

服装定制系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布…

SONIC系统(1)编译与构建

1、环境 准备一个linux环境&#xff0c;我这里使用ubuntu20.04 安装所需依赖 sudo apt-get update sudo apt-get install -y build-essential fakeroot debhelper \autotools-dev quilt libssl-dev libncurses5-dev \python3-pip python3-setuptools python3-wheel python3-…

Vue3+TypeScript二次封装axios

安装如下 npm install axios 第一步&#xff1a;创建config配置文件&#xff0c;用于存放请求后端的ip地址&#xff0c;用于后期打包后便于修改ip地址。 注&#xff1a;typescript要求参数要有类型。&#xff08;ES6 定义对象 属性 类型 修改的是属性的值&#xff09; inte…

Java+vue的医药进出口交易系统(源码+数据库+文档)

外贸系统|医药进出口交易系统 目录 基于Javavue的服装定制系统 一、前言 二、系统设计 三、系统功能设计 仓储部门功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设…

解锁生活密码,AI答案之书解决复杂难题

本文由 ChatMoney团队出品 介绍说明 “答案之书智能体”是您贴心的智慧伙伴&#xff0c;随时准备为您解答生活中的种种困惑。无论您在工作中遭遇瓶颈&#xff0c;还是在情感世界里迷失方向&#xff0c;亦或是对个人成长感到迷茫&#xff0c;它都能倾听您的心声&#xff0c;并给…

大数据Flink(一百一十六):Flink SQL的时间属性

文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、​​​​​​​SQL 指定时间属性的两种方式 四、​​​​​​​​​​​​​​SQL 处理时间DDL定义 五、​​​​​​​​​​​​​​SQL 事件时间DDL定义 Flink SQL的时…