TensorFlow入门(五)多层 LSTM 通俗易懂版

多层堆叠LSTM的理论与TensorFlow的实现 引言 原始LSTM模型由单个LSTM层和随后的输出层组成。 堆叠LSTM(Stacked LSTM)是此模型的扩展,具有多个LSTM层。 文章结构 为什么要堆叠LSTM? 堆叠LSTM结构 堆叠LSTMTensorflow实现 为什么要堆叠LSTM? 堆叠LSTM使模型深度更深,提取的特征更深层次,从而使预测更准确。堆叠LSTM在大范围的预测问题上取得了不错的效果。 The success of deep neural networks is commonly attributed to the h 阅读详情

欢迎转载,但请务必注明原文出处及作者信息。

@author: huangyongye
@creat_date: 2017-03-09

前言: 根据我本人学习 TensorFlow 实现 LSTM 的经历,发现网上虽然也有不少教程,其中很多都是根据官方给出的例子,用多层 LSTM 来实现 PTBModel 语言模型,比如:
tensorflow笔记:多层LSTM代码分析
但是感觉这些例子还是太复杂了,所以这里写了个比较简单的版本,虽然不优雅,但是还是比较容易理解。

如果你想了解 LSTM 的原理的话(前提是你已经理解了普通 RNN 的原理),可以参考我前面翻译的博客:
(译)理解 LSTM 网络 (Understanding LSTM Networks by colah)

如果你想了解 RNN 原理的话,可以参考 AK 的博客:
The Unreasonable Effectiveness of Recurrent Neural Networks

很多朋友提到多层怎么理解,所以自己做了一个示意图,希望帮助初学者更好地理解 多层RNN.


图1 3层RNN按时间步展开

本例不讲原理。通过本例,你可以了解到单层 LSTM 的实现,多层 LSTM 的实现。输入输出数据的格式。 RNN 的 dropout layer 的实现。

# -*- coding:utf-8 -*-
import tensorflow as tf
import numpy as np
from tensorflow.contrib import rnn
from tensorflow.examples.tutorials.mnist import input_data

# 设置 GPU 按需增长
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)

# 首先导入数据,看一下数据的形式
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
print mnist.train.images.shape
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
(55000, 784)

1. 首先设置好模型用到的各个超参数

lr = 1e-3
# 在训练和测试的时候,我们想用不同的 batch_size.所以采用占位符的方式
batch_size = tf.placeholder(tf.int32)  # 注意类型必须为 tf.int32
# 在 1.0 版本以后请使用 :
# keep_prob = tf.placeholder(tf.float32, [])
# batch_size = tf.placeholder(tf.int32, [])

# 每个时刻的输入特征是28维的,就是每个时刻输入一行,一行有 28 个像素
input_size = 28
# 时序持续长度为28,即每做一次预测,需要先输入28行
timestep_size = 28
# 每个隐含层的节点数
hidden_size = 256
# LSTM layer 的层数
layer_num = 2
# 最后输出分类
文本分类() | (6) 多层双向LSTM 项目Github地址 本篇博客主要介绍基于多层双向LSTM的文本分类算法的原理及实现细节。 目录 1. 分类原理 2. 实现细节 1. 分类原理 对于输入文本序列,在LSTM的每个时间步输入序列中一个单词的嵌入表示,计算当前时间步的隐藏状态,用于当前时间步的输出以及传递给下一个时间步和下一 个单词的词向量一起作为LSTM单元输入,然后再计算下一个时间步的LSTM隐藏状态,以此重复... 阅读详情

相关推荐

光耦选型避坑指南:如何根据CTR参数精准计算输入输出电阻(附24V工业场景实例)

本文深入解析光耦选型核心,聚焦电流传输比(CTR)参数及其衰减特性,提供从输出需求反向推导输入输出电阻的精准计算方法。文章以24V工业场景为例,结合光电耦合器数据手册,详细阐述了如何根据CTR最小值进行降额设计,并给出包含反接保护、TVS管等在内的完整保护电路方案,旨在构建高可靠、长寿命的信号隔离电路,避免因选型或设计不当导致的系统故障。

nept的博客 1007

keras 多层lstm_如何堆叠多层LSTM网络——长短期记忆(LSTM)系列_LSTM的建模方法(2)...

如何堆叠多层LSTM网络——长短期记忆(LSTM)系列_LSTM的建模方法(2)发布时间:2018-12-07 15:15,浏览次数:1362, 标签:LSTM导读:堆叠式LSTM属于深度学习,通过添加网络的深度,提高训练的效率,获得更高的准确性。文中介绍了堆叠式LSTM的架构和实现方法在堆叠式LSTM中,层与层的输数出通过return_sequences = True参数修改成3D数据,以便供下...

weixin_42327743的博客 2812

HBase在物流行业的应用:轨迹数据存储

想象一下,每天在全球范围内,数以亿计的物流包裹在各个城市、乡镇间穿梭。每一个包裹从发货人手中出发,经过仓储中心、转运站,最终到达收货人手中,这一路上都留下了它的“足迹”,也就是我们所说的轨迹数据。这些数据就像一个个拼图碎片,完整拼接起来后,能够清晰地呈现出整个物流网络的运行状况。例如,你在网上购买了一件心仪已久的商品,迫不及待地想知道它现在到哪儿了。物流平台实时更新的轨迹信息,让你可以准确了解包裹是在运输途中,还是已经到达附近的站点。

架构师的AI之路,分享AI应用开发架构的学习与实践。 939

LSTM部分整理

短时记忆 RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。 因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。 在反向传播期间,RNN 会面临梯度消失的问题。 梯度是用于更新神经网络的权重值,消失的梯度问题是当梯度随着时间的推移传播时梯度下降,如果梯度值变得非常小,就不会继续学习。 标准的LSTM 前面提到LSTM由三个门来控制细胞状态,这三个门分别称为忘记门、输入门和输出门。下面一个一个的来讲...

x3464的博客 1769

【语音识别】关于多层LSTM的结构解读

首先明确一点,RNN单元的输入输出的维度,点击参考keras.layers.RNN()文档 输入尺寸 3D 张量,尺寸为 (batch_size, timesteps, input_dim)。 输出尺寸 如果 return_state:返回张量列表。 第一个张量为输出。剩余的张量为最后的状态, 每个张量的尺寸为 (batch_size, units)。 如果 return_sequences:返回 3D 张量, 尺寸为 (batch_size, timesteps, units)。 否则,返回尺寸为 (b

lynn_flame的博客 4020

lstm timestep一般是多少_TensorFlow入门多层 LSTM 通俗易懂

欢迎转载,但请务必注明原文出处及作者信息。@author: huangyongye@creat_date: 2017-03-09前言:根据我本人学习 TensorFlow 实现 LSTM 的经历,发现网上虽然也有不少教程,其中很多都是根据官方给出的例子,用多层 LSTM 来实现 PTBModel 语言模型,比如:tensorflow笔记:多层LSTM代码分析但是感觉这些例子还是太复杂了,所以这里写...

weixin_39567943的博客 784

tensorflowTensorFlow入门多层 LSTM 通俗易懂

前言: 根据我本人学习 TensorFlow 实现 LSTM 的经历,发现网上虽然也有不少教程,其中很多都是根据官方给出的例子,用多层 LSTM 来实现 PTBModel 语言模型,比如:  tensorflow笔记:多层LSTM代码分析  但是感觉这些例子还是太复杂了,所以这里写了个比较简单的本,虽然不优雅,但是还是比较容易理解。 如果你想了解 LSTM原理的话(前提是你已经理解

zkq_1986的博客 1923

单层LSTM多层LSTM的输入与输出

单层LSTM的输入与输出 上图是单层LSTM的输入输出结构图。其实它是由一个LSTM单元的一个展开,如下图所示: 所以从左到右的每个LSTM Block只是对应一个时序中的不同的步。 在第一个图中,输入的时序特征有S个,长度记作:seq_len,每个特征是一个C维的向量,长度记作:input_size。而Initial State是LSTM的隐藏状态和内部状态的一个输入的初始化。分别记作:h0和c0。 输出可以通过设置,来决定是输出所有时序步的输出,还是只输出最后一个时序步的输出。Final_State

qq_39777550的博客 3万+

Pytorch实现多层lstm

Pytorch实现多层lstmPytorch实现多层lstmPytorch实现多层lstm

Major_S的博客 1万+

tensorflow笔记:多层LSTM代码分析

tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) tensorflow笔记:多层CNN代码分析之前讲过了tensorflow中CNN的示例代码,现在我们来看RNN的代码。不过好像官方只给了LSTM的代码。那么我们就来看LSTM吧。LSTM的具体原理就不讲了,可以参见深度学习笔记()LSTM,讲的非常清楚。坦白说,这份写LSTM的代码有点难,

Multiangle's Notepad 16万+

基于Pytorch实现LSTM多层LSTM,双向LSTM)进行文本分类

LSTM原理请看这:点击进入 LSTM: nn.LSTM(input_size, hidden_size, num_layers=1, nonlinearity=tanh, bias=True, batch_first=False, dropout=0, bidirectional=False)   input_size:表示输入 xt 的特征维度 hidden_size:表示输出的特征维度 num_layers:表示网络的层数 nonlinearity:表示选

weixin_43646592的博客 2万+

RNN多层LSTM理解:输入,输出,时间步,隐藏节点数,层数

从pytorch代码角度初次理解LSTM各种术语。 LSTM: class torch.nn.LSTM(*args, **kwargs) Parameters input_size 输入特征维数:(特征向量的长度,如2048) hidden_size 隐层状态的维数:(每个LSTM单元或者时间步的输出的ht的维度,单元内部有权重与偏差计算) num_layers RNN层的个数:(在竖直...

weixin_41041772的博客 6万+

LSTM内部结构及前向传播原理——LSTM从零实现系列(1)

LSTM前向传播原理

AI量化交易实验室 7189

博途WinCC Runtime Professional V16链接地址.txt

博途WinCC Runtime Professional V16链接地址

上一篇: TensorFlow入门(四) name / variable_scope 的使用
下一篇: TensorFlow入门(六) 双端 LSTM 实现序列标注(分词)
永永夜
博客等级 码龄12年 963粉丝 38原创
评论 94
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值