TensorFlow【极简】RNN

用RNN(循环神经网络)预测股票价格 本文演示了用Python编写的一个股票价格预测脚本,利用了TensorFlow和Keras库来构建和训练一个循环神经网络(RNN)模型,预测股票价格的相对完整的过程。 阅读详情

简洁单层RNN

import tensorflow as tf
from tensorflow.contrib.rnn import LSTMCell
from tensorflow.examples.tutorials.mnist import input_data

"""加载样本集:手写数字"""
mnist = input_data.read_data_sets('data', one_hot=True)

"""网络结构"""
num_units = 50  # 隐层神经元数量
batch_size = 500  # 批量

# 输入层
X = tf.placeholder(tf.float32, [batch_size, 28, 28])  # 批量、高、宽
y = tf.placeholder(tf.float32, [batch_size, 10])  # 10分类(0~9)

# LSTM
lstm_cell = LSTMCell(num_units)

# 获取最后一个隐层
LSTMStateTuple = lstm_cell.zero_state(batch_size, tf.float32)  # c&h
for time_step in range(28):
    h, LSTMStateTuple = lstm_cell(X[:, time_step, :], LSTMStateTuple)

# 输出层
W = tf.Variable(tf.truncated_normal([num_units, 10], stddev=.1))
b = tf.Variable(tf.constant(.1, tf.float32, [10]), dtype=tf.float32)
o = tf.matmul(h, W) + b  # output

# softmax处理、交叉熵损失
loss = tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=o)

# 优化
optimize = tf.train.AdamOptimizer().minimize(loss)

"""迭代训练"""
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(1001):
    batch = mnist.train.next_batch(batch_size)  # 分批
    inputs = batch[0].reshape([batch_size, 28, 28])
    labels = batch[1]
    feed_dict = {X: inputs, y: labels}
    sess.run(optimize, feed_dict)
    if i % 100 == 0:
        cross_entropy = tf.reduce_mean(loss).eval(feed_dict, sess)
        print('step %d; loss %g' % (i, cross_entropy))

详细双层RNN

import matplotlib.pyplot as mp, numpy as np, matplotlib.gridspec as mg
import tensorflow as tf
from tensorflow.contrib.rnn import MultiRNNCell, LSTMCell
from tensorflow.examples.tutorials.mnist import input_data
np.random.seed(0)

"""加载样本集:手写数字"""
mnist = input_data.read_data_sets('data', one_hot=True)
train, test = mnist.train, mnist.test

"""网络结构"""
num_units = 50  # 隐层神经元数量
batch_size = 1  # 批量

# 输入层
X = tf.placeholder(tf.float32, [batch_size, 28, 28])  # 批量、高、宽
y = tf.placeholder(tf.float32, [batch_size, 10])  # 10分类(0~9)

# 双层LSTM
lstm_cells = MultiRNNCell([LSTMCell(num_units),
                           LSTMCell(num_units)])

# 获取最后一个隐层
LSTMStateTuple = lstm_cells.zero_state(batch_size, tf.float32)
h_list = []
for time_step in range(28):
    h, LSTMStateTuple = lstm_cells(X[:, time_step, :], LSTMStateTuple)
    h_list.append(h)
h = h_list[-1]  # 获取最后一个隐藏

# 输出层
W = tf.Variable(tf.truncated_normal([num_units, 10], stddev=.1))
b = tf.Variable(tf.constant(.1, tf.float32, [10]), dtype=tf.float32)
y_fit = tf.nn.softmax(tf.matmul(h, W) + b)  # softmax
cross_entropy = -tf.reduce_mean(y * tf.log(y_fit))  # 交叉熵损失

# 优化
optimize = tf.train.AdamOptimizer().minimize(cross_entropy)

# 准确率
prediction = tf.equal(tf.argmax(y_fit, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(prediction, tf.float32))

"""训练、检验"""
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(20001):
    batch = train.next_batch(batch_size)  # 分批
    inputs = batch[0].reshape([batch_size, 28, 28])
    labels = batch[1]
    sess.run(optimize, {X: inputs, y: labels})
    if i % 2000 == 0:
        batch_test = test.next_batch(batch_size)
        inputs_test = batch_test[0].reshape([batch_size, 28, 28])
        labels_test = batch_test[1]
        acc = sess.run(accuracy, {X: inputs_test, y: labels_test})
        print('step %d; acc %g' % (i, acc))

"""单个图像RNN每层结果"""
batch = test.next_batch(batch_size)
inputs = batch[0].reshape([batch_size, 28, 28])
labels = batch[1]
mp.figure(str(np.argmax(labels)))  # 数字对应标签
gs = mg.GridSpec(28, 2)  # 子图
for e, h_pred in enumerate(h_list):
    y_pred = tf.nn.softmax(tf.matmul(h_pred, W) + b)
    probs = y_pred.eval({X: inputs, y: labels}, sess)
    mp.subplot(gs[e, 1])
    mp.bar(range(10), probs[0], width=.1)
    mp.axis('off')
mp.subplot(gs[:, 0])
mp.imshow(inputs[0], cmap='gray')
mp.axis('off')
mp.show()

单个图像RNN每层结果

在这里插入图片描述
附录

encn
Recurrent Neural Network循环神经网络
Long Short-Term Memory networks长短期记忆网络
Gated Recurrent Unit门控循环单元
Bidirectional RNN双向循环神经网络
【Tensorflow教程笔记】循环神经网络(RNN) Tensorflow教程笔记 TensorFlow 基础 TensorFlow 模型建立与训练 基础示例:多层感知机(MLP) 卷积神经网络(CNN) 循环神经网络(RNN) 目录Tensorflow教程笔记循环神经网络的工作过程文本自动生成DataLoader读取文本模型构建训练预测 循环神经网络(Recurrent Neural Network, RNN)是一种适宜于处理序列数据的神经网络,被广泛用于语言模型、文本生成、机器翻译等。 循环神经网络的工作过程 循环神经网络是一个处理时间序列数据的神经网络 阅读详情

相关推荐

TensorFlow 使用上个模型输出的一个向量表示 来给RNN生成一段文本

import tensorflow as tf from tensorflow.contrib.rnn import LSTMCell cell = LSTMCell(128,state_is_tuple=False) init_state = tf.random_normal([16,128]) # 可以是上一模型的输出 output,new_state = cell(inputs=init_state,state=init_state) for i in range(20): outpu

开卷有益 634

tensorflow 实现rnn

本文主要用于讨论官方自带的一个例子,rnn,用于多对一的情况,也就是用于图像分类, 先看下tensorflow的版本,下面在代码低版本可能运行不了: In [1]: import tensorflow as tfIn [2]: tf.__version__Out[2]: '1.1.0-rc0' 代码: import tensorflow as tff

luoyexuge的专栏 1168

[Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

从本专栏开始,作者正式开始研究Python深度学习、神经网络及人工智能相关知识。前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的神经网络。本文将详细讲解循环神经网络RNN和长短期记忆网络LSTM的原理知识,并采用TensorFlow实现手写数字识别的RNN分类案例。基础性文章,希望对您有所帮助。

杨秀璋的专栏 1万+

from tensorflow.contrib.rnn import LSTMCell 使用疑惑

使用代码from tensorflow.contrib.rnn import LSTMCell导入LSTMCell时,显示如下错误。但在进行模型训练时,并不会出现报错,LSTMCell可以被找到,并实例化为tensorflow.python.ops.rnn. cell jimpl.L STMCell。

qq_51007474的博客 805

跨厂商网络设备的RADIUS认证:Windows NPS的兼容性与最佳实践

本文详细探讨了Windows NPS在多厂商网络环境中的RADIUS认证实践,特别针对华为、华三、思科等主流设备的兼容性问题提供解决方案。从基础配置到高级优化,涵盖VSA属性映射、认证协议选择及安全加固措施,帮助企业实现统一身份认证并提升网络安全性。

weixin_29213827的博客 423

具身智能四大技术路线:VLA、大小脑、世界模型与强化学习

具身智能是机器人实现感知-决策-执行闭环的核心范式,其本质在于物理世界中的具身化交互能力。技术演进围绕如何高效建模环境、理解指令并生成鲁棒动作展开,衍生出四大主流路径:视觉-语言-动作(VLA)端到端学习、大小脑分层控制、世界模型驱动预测,以及强化学习原生策略优化。VLA强调多模态对齐与泛化能力,适合语义理解优先场景;大小脑架构兼顾实时性与可解释性,是工业落地的高可靠选择;世界模型追求内在物理模拟,代表长期认知跃迁方向;强化学习则扎根仿真试错,在力控、抓取等连续控制任务中展现强鲁棒性。本文聚焦这四大路线的技

weixin_32181267的博客 297

加速tensorflow图计算速度学习笔记

1.抛弃传统tensorflow中的同步方法,既是训练操作必须要等数据传入之后才能开始运行,取而代之的是tensorflow中的线程和队列。将数据的输出和取出用队列形式操作,将其放在不同的线程中,这样就可以取代传统的方法。 来源:https://blog.csdn.net/lyc_yongcai/article/details/73239693 import time import te...

weixin_43971116的博客 574

工业相机TEC散热技术:从原理到高精度成像的实战解析

本文深入解析了工业相机TEC散热技术的核心原理与实战应用。通过阐述热电制冷器如何利用帕尔帖效应实现精准温控,有效抑制图像传感器暗电流噪声,从而保障高精度成像的稳定性。文章结合工业场景痛点,提供了从TEC选型、系统集成到控制逻辑的完整设计指南,并分享了不同应用场景下的实战案例,是提升工业视觉系统成像质量的关键技术解析。

weixin_29269441的博客 414

tensorflow_RNN

第一步: 数据载入 import tensorflow as tf #from tensorflow.contrib import rnn from tensorflow.examples.tutorials.mnist import input_data import numpy as np import matplotlib.pyplot as plt print ("Packages i...

weixin_43282288的博客 690

从入门到精通:用友BIP旗舰版全模块实施与运维实战指南

本文详细介绍了用友BIP旗舰版的全模块实施与运维实战指南,涵盖财务云、供应链云、生产制造等核心模块的配置与优化技巧。通过渐进式学习法和实战案例,帮助用户从入门到精通,提升系统实施效率和运维能力,特别适合企业IT人员和实施顾问参考。

weixin_29207533的博客 901

Python实战:用Sinkhorn算法搞定最优传输问题(附完整代码)

本文详细介绍了如何使用Python实现Sinkhorn算法解决最优传输问题,包括算法原理、关键步骤和完整代码示例。通过实际案例(如图像颜色迁移)展示其高效性和稳定性,适合机器学习开发者和数据科学家应用于分布匹配等场景。

weixin_30879169的博客 99

如何用TensorFlow构建RNN?这里有一份极简的教程

本文来自AI新媒体量子位(QbitAI) 本文作者Erik Hallström是一名深度学习研究工程师,他的这份教程以Echo-RNN为例,介绍了如何在TensorFlow环境中构建一个简单的循环神经网络。 什么是RNN? RNN是循环神经网络(Recurrent Neural Network)的英文缩写,它能结合数据点之间的特定顺序和幅值大小等多个...

weixin_34250434的博客 312

初识 QML

QML 是一种声明性语言,允许根据用户界面的可视组件以及它们如何相互交互和相互关联来描述用户界面。QML 是一种高度可读的语言,旨在使组件能够以动态方式互连,并且允许组件在用户界面中轻松重复使用和自定义。 使用 Qt Quick,开发人员可以轻松地在 QML 中构建流体动画用户界面,并且可以选择将这些用户界面连接到任何后端 C++ 库。

青春不老,奋斗不止! 1万+

三天速成 香港科技大学TensorFlow课件分享

三天速成 香港科技大学TensorFlow课件分享

qq_43668118的博客 290

R语言线性混合模型(LMM)分析

它将数据表示为固定效应和随机效应的线性组合,其中固定效应表示总体均值的影响,随机效应表示个体间的随机差异。LMM的目标是通过最大似然估计或最小二乘估计来估计模型中的固定效应和随机效应的参数。LMM结合了固定效应和随机效应,能够同时考虑个体间和个体内的变异,并适用于具有相关性的数据。目前在使用LMM的R语言包中,较常用的是lme4和nlme包,它们提供了丰富的函数和工具来拟合和分析线性混合模型。面板数据分析:LMM适用于分析具有面板结构的数据,如经济学中的面板数据或教育研究中的学生评估数据。

走向CTO的路上... 2972

Tensorflow笔记

好书: 1、Tensorflow实战 2、面向机器智能的Tensorflow实践(第9章可以明确前进的路) 3、Tensorflow技术解析与实战 Tensorflow API文档:https://tensorflow.google.cn/api_docs/ 数据网站:Kaggle 充分理解 name / variable_scope 十图详解tensorflow数据读取机制...

愿我善始善终 330

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Tensorflow循环神经网络RNN

循环神经网络(RNN)是处理序列数据的专用神经网络,能够捕捉数据中的时间依赖关系。摘要介绍了RNN的基本原理、记忆单元和循环层结构,以及LSTM、GRU等改进单元。重点探讨了RNN在时间序列预测中的应用,包括数据准备、不同模型架构(如简单RNN、深度RNN)的实现和评估。通过案例分析展示了RNN处理单变量和多变量时间序列的能力,以及序列到序列模型的预测优势。

weixin_56449709的博客 1291

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【深度学习】循环神经网络(RNN)的tensorflow实现

【深度学习】循环神经网络(RNN)的tensorflow实现一、循环神经网络原理1.1、RNN的网络结构1.2、RNN的特点1.3、RNN的训练二、循环神经网络的tensorflow实现参考资料 循环神经网络又被成为时间递归神经网络(Recurrent Neural Networks),传统神经网络,每一个时间步隐含层神经元之间没有连接。但RNN中每一个时间步的隐含层输入由当前时间步的输入和上一时...

Luqiang_Shi的博客 3066

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

循环神经网络-RNN

有时候,我们仅仅需要知道先前的信息来执行当前的任务。​​ 这一坨,要消除这种情况就需要把这一坨在求偏导的过程中去掉,至于怎么去掉,一种办法就是使 ∂ S j ∂ S j − 1 ≈ 1 {\frac{\partial{S_{j}}}{\partial{S_{j-1}}}}\approx1∂。答案是,还有很多依赖因素。因为RNN结构能够很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类的语言,,语音等进行很好的处理,广泛应用于NLP领域的各项任务,如文本分类,情感分析,意图识别,机器翻译等。

顺其自然~专栏 3947

使用 TensorFlow 实现 RNN(循环神经网络)

循环神经网络(RNN)是一种适用于序列数据的神经网络模型,它能够通过引入“循环”机制,保持模型的“记忆”,即可以记住前一时刻的信息。传统的神经网络(如前馈神经网络)处理的是静态输入,而 RNN 通过将前一时刻的输出作为当前时刻的输入之一,能够有效地处理时序数据。本文介绍了如何使用 TensorFlow 实现 RNN,并通过具体代码示例展示了如何训练模型和进行预测。RNN 是处理时序数据的强大工具,而 LSTM 和 GRU 是对 RNN 的改进,能够更好地处理长序列问题。

一碗黄焖鸡三碗米饭的博客 1512

深度学习——循环神经网络RNN

本篇博客详细的介绍了神经网络中的另一大分支——循环神经网络,对其原理、结构、分类进行了详细的阐述,并结合tensorflow框架,给出了如何构建简单的循环神经网络

尘心平的博客 3639

循环神经网络系列(二)Tensorflow中dynamic_rnn

1.回顾 上一篇博文(循环神经网络系列(一)Tensorflow中BasicRNNCell)中我们介绍了在Tensoflow中,每个RNN单元的实现,以及对应各个参数的含义。自那之后,我们就能通过Tensorflow实现一个单元的计算了。 import tensorflow as tf import numpy as np x = np.array([[1, 0, 1, 2], [2, 1, 1...

空字符 2719

【个人整理】tensorflow关于循环神经网络(RNN)的输出与状态的“维度”分析

前言:使用现在主流的深度学习框架实现循环神经网络是很简单方便的,所以我们很多时候可能忘了怎么去分析神经网络的输入,输出到底是什么,循环层各个节点之间维护的所谓的状态到底是什么?本文需要循环神经网络的基本知识和一些基本的理论,可以参见我前面的两篇文章: https://blog.csdn.net/qq_27825451/article/details/88870027 写这篇文章的初衷是...

MIss-Y的博客 6753

Tensorflow笔记———循环神经网络RNN

如下图,左图一共要送入RNN层两组数据,每组数据经过一个时间步就会得到一个输出结果,每个时间步送入三个数值,则输入循环层的数据维度就是[2,1,3];然后在按照顺序将time输入RNN,得到输出02,这时我们会发现前面输入的what对此时输入的time产生了影响,如图中隐藏层中有一般是黑色即是第一步输入what产生的影响。通过上面的例子,我们已经发现,短期的记忆影响较大(如橙色区域),但是长期的记忆影响就很小(如黑色和绿色区域),这就是 RNN 存在的短期记忆问题。典型的时序数据像:股价,天气,文本。

qq_55977554的博客 1888

神经网络学习小记录2——利用tensorflow构建循环神经网络(RNN)

神经网络学习小记录2——利用tensorflow构建循环神经网络(RNN)学习前言RNN简介tensorflow中RNN的相关函数tf.nn.rnn_cell.BasicLSTMCelltf.nn.dynamic_rnn全部代码 学习前言 在前一段时间已经完成了卷积神经网络的复习,现在要对循环神经网络的结构进行更深层次的明确。 RNN简介 RNN 是当前发展非常火热的神经网络中的一种,它擅长对序...

Bubbliiiing的学习小课堂 7096
上一篇: Keras【极简】LSTM【时序预测】
下一篇: Keras文本分类
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值