Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究
原文链接:https://tecdat.cn/?p=37634
本文聚焦于利用马尔可夫递归神经网络(MarkovRNN)结合树库展开建模工作。MarkovRNN 通过整合马尔可夫特性与离散随机变量来深入探索递归神经网络中的随机转换机制,旨在高效处理具有复杂潜在信息的高度结构化序列数据(点击文末“阅读原文”获取完整代码数据)。
在该模型中,每个时间步的离散样本均源自参数化的分类分布,且潜在信息的编码取决于所选状态对应的不同状态编码器。
相关视频
一、引言
语言建模在自然语言处理领域至关重要,它对于理解和生成自然语言文本起着关键作用。传统方法在处理复杂数据结构和潜在信息时存在一定局限性,而 MarkovRNN 模型为解决这些问题提供了新的思路。
马尔可夫递归神经网络(MRNN)通过将马尔可夫性质与离散随机变量相结合来探索递归神经网络中的随机转换。提出这个模型是为了处理具有复杂潜在信息的高度结构化的序列数据。在每个时间步,离散样本从参数化的分类分布中抽取,而潜在信息则根据所选状态由不同的状态编码器进行编码。

二、实验设置
软件环境
采用 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)
`````` 

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() 


点击标题查阅往期内容

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

左右滑动查看更多

01

02

03

04

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) 
(三)数据可视化
为了进一步分析模型的数据特征,进行了数据可视化操作。
这些可视化操作包括使用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))
`````` 
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() 
plt.bar(np.arange(config.K), np.sum(z,0)/np.sum(z), alpha=0.8)plt.savefig(URL+'/stat.png')plt.show() 

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

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

点击文末“阅读原文”
获取全文完整代码数据资料。
本文选自《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神经网络分类



![]()

相关文章:
Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究
原文链接:https://tecdat.cn/?p37634 本文聚焦于利用马尔可夫递归神经网络(MarkovRNN)结合树库展开建模工作。MarkovRNN 通过整合马尔可夫特性与离散随机变量来深入探索递归神经网络中的随机转换机制,旨在高效处理具有复杂潜在信…...
setup函数子传父普通写法
父组件 <template><div><p>接收的数据: {{ receivedData }}</p><Demo4Chiren2 custom-event"handleGetWeb" /></div> </template><script> import { ref } from vue; import Demo4Chiren2 from ./demo4Chiren2.vue…...
seafaring靶场漏洞测试攻略
步骤一:打开网页 一:sql注入漏洞 步骤一:测试回显点 -1 union select 1,2,3# 步骤二:查看数据库 -1 union select 1,2,database()# 步骤三:查看表名 -1 union select 1,2,group_concat(table_name) from informati…...
简单示例,搞懂PowerBI的ALL(),ALLEXCEPT()和ALLSELECTED()的区别
假设我们有如下数据,我们来统计下各班级的人数 我们在报表页里加上 班级’二班‘ 的筛选条件,此时PowerBI已经自动为我们显示了各班级人数:一班有3人,二班有1人。 根据我们的筛选条件,我们的统计人数应该是按照筛选器&…...
Collection
java.util.Collections:是集合工具类 作用:Collections不是集合,而是集合的工具类 常用API addAll package Collections;import java.util.ArrayList; import java.util.Collections;public class CollectionsDemo {public static void main(String[]…...
19章 泛型
1.修改程序清单19-1中的GenericStack类,使用数组而不是ArrayList来实现它。你应该在给栈添加新元素之前检查数组的大小如果数组满了,就创建一个新数组。该数组是当前数组大小的两倍,然后将当前数组的元素复制到新数组中。 public class Gene…...
基于python+django+mysql+Nanodet检测模型的水稻虫害检测系统
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
计算机网络27、28——Linux命令1、2
1、虚拟机网络前方路径内容 用户名机器名:/$ $表示普通用户,#表示root用户 2、Linux不分盘,都是绝对路径 /表示根目录,表示计算机文件夹下 ~是当前用户的家,表示home文件夹下自己的文件夹 3、bin文件夹下的是可执…...
【Python深度学习】逆强化学习(IRL):通俗揭开学习背后的奥秘
逆强化学习:揭开学习背后的奥秘 1. 引言 当我们谈论人工智能(AI)时,很多人第一时间会想到强化学习。强化学习是一种让智能体通过与环境的互动,逐渐学习到如何做出最优决策的学习方法。然而,有一种更加神奇的学习方式叫做 逆强化学习(Inverse Reinforcement Learning,…...
Linux:五种IO模型
1:五种IO模型 1:阻塞IO 阻塞IO: 在内核将数据准备好之前,系统调用会一直等待.所有的套接字,默认 都是阻塞方式。 2:非阻塞 IO 非阻塞 IO: 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EWOULDBLOCK 错误码。 非阻塞 IO 往往需…...
ansible企业实战
ansible最佳实践 优化ansible速度 开启SSH长连接 修改 /etc/ansible/ansible.cfg里面的参数 ssh_args -C -o ControlMasterauto -o ControlPersist5d ControlPersist5d这个参数是设置整个长连接保持时间设置为5天,如果开启,通过SSH连接过的设备都会…...
面向对象程序设计之模板进阶(C++)
在之前我出过一篇博客介绍了模版的初阶:面向对象程序设计(C)模版初阶,接下来我们将进行模版的进阶学习,介绍关于更多模版的知识 1.非类型模版参数 模板参数分类类型形参与非类型形参 类型形参即:出现在模板参数列表中,跟在class或…...
电巢科技携Ecosmos元宇宙产品亮相第25届中国光博会
第25届中国国际光电博览会(“CIOE中国光博会”)今日在深圳国际会展中心盛大开幕。本届博览会以“光电引领未来,驱动应用创新”为主题,吸引了全球超过3700家优质光电企业参展,展示了光电产业的最新成果和前沿技术。 电…...
Redis 入门 - 收官
《Redis 入门》系列文章总算完成了,希望这个系列文章可以想入门或刚入门的同学提供帮助,希望能让你形成学习Redis系统性概念。 当时为什么要写这个系列文章,是因为我自己就是迷迷糊糊一路踩坑走过来的,我踩完的坑就踩完了&#x…...
Windows技术栈企业基础底座(1)-为基于Windows的Nginx安装证书
企业的基础环境是一个组织的信息化数字化底座。传统企业基础环境多种系统,应用交杂,多种技术栈使得深入运维成本极大,且人员知识技能较难复用,造成资源浪费。本系列旨在尝试推动这一理念, 建立Windows, 或linux聚焦的技术栈的企业…...
ThreeJS入门(002):学习思维路径
查看本专栏目录 - 本文是第 002篇入门文章 文章目录 如何使用这个思维导图 Three.js 学习思维导图可以帮助你系统地了解 Three.js 的各个组成部分及其关系。下面是一个简化的 Three.js 学习路径思维导图概述,它包含了学习 Three.js 的主要概念和组件。你可以根据这个…...
基于ssm+vue+uniapp的新生报到系统小程序
开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…...
掌握 JavaScript ES6+:现代编程技巧与模块化实践
掌握 JavaScript ES6:现代编程技巧与模块化实践 一 . 变量声明 let二 . 声明常量 const三 . 模板字符串四 . 函数的参数默认值五 . 箭头函数六 . 对象初始化七 . 解构7.1 接收 JSON 对象7.2 接收数组 八 . 延展操作符九 . 导入和导出9.1 方式一9.2 方式二 这篇文章我…...
AttackGen - AI 网络安全事件响应测试工具,附下载链接
为了提高我们团队在安全活动中的响应效率,我关注到了一款叫 AttackGen 的工具,我们需要的是一个既能快速生成场景又能准确反映现实威胁的工具。 在红蓝对抗中,我们经常要模拟各种攻击场景,以测试我们的防御水平。这不仅仅是为了“…...
CAD2020安装方法
文章目录 下载安装包打开压缩包打开文件夹打开CAD2020文件夹双击运行Setup.exe点击安装选择我接受 点击下一步路径默认点击安装等待加载完成安装完成点击立即启动点击OK点击输入序列号点击我同意点击激活输入序列号和 产品钥密点击下一步选择我具有 Autodesk 提供的激活码以管理…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
