当前位置:   article > 正文

tensorflow学习笔记(八):LSTM手写体(MNIST)识别_mnist lstm

mnist lstm


一、LSTM简介

LSTM是一种特殊的RNN,很好的解决了RNN中梯度消失的问题。LSTM的结构如下:
在这里插入图片描述
在LSTM中,有遗忘门、输入门、和输出门。LSTM在三维空间的结构如下:
在这里插入图片描述
详细的理论知识参见:循环神经网络RNN详细推导LSTM(长短时间记忆模型)的详细推导

二、主要函数

1、参数设置的理解

这里主要指输入维度,输出维度、时间步长等参数的设置,如下:

#输入图片是28*28
n_inputs=28 #输入一行,一行有28个数据
max_time=28 #一共有28行
lstm_size=100 #隐藏层单元
n_classes=10 #10个分类
batch_size=50 #每个样本50个批次
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • batch_size:这个参数其实和其他神经网络的batch_size意义相同,都指一次性输入到神经网络中的样本数。这里batch_size=50,含义是一次性将50个图像输入到LSTM中进行训练,完成一次误差反向传播和参数更新。
  • n_steps:实际上指的是构造的LSTM总共有多少个时间上的输入。在这里取n_step = 28,指的是先后依次输入28次,一次输入的个数为batch_size * n_input。在MNIST数据集中,一幅图片表示为28*28的矩阵,因此如果一次输入1行,那么要先后依次输入28行才能将一个图片的信息完全输入。那么同时input_dim(在此处为n_inputs)的含义也很清楚了,就是一次输入的数据维数,在这里就是1行的数据个数。因此,输入端的操作是,在起始0时刻输入50幅图片的第1行,1时刻输入50幅图片的第2行。以此类推直到第28时刻输入最后1行。
  • n_hidden:这个参数表示的是用于记忆和储存过去状态的节点个数。即使用n_hidden个节点表示隐含层状态。
  • n_classes:这个参数的含义是输出结果维数。在MNIST数据集中,由于做的是0~9的分类,所以输出维度自然是10。

2、张量维度的改变tf.reshape()

用于改变张量的维度,在卷积池化完成后,改变张量的维度用于全连接,定义如下:

tf.reshape(tensor, shape, name=None)
  • 1

参数

  • tensor:输入的张量,即需要改变维度的张量;
  • shape:需要的形状。

返回值:返回一个新的,大小为shape的张量。

程序示例:

import tensorflow as tf

x=[[[1,2]],[[7,8]],[[4,5]],[[6,9]]]
y=tf.reshape(x,[-1,4])  #-1:表示第一维信息由系统自己确定,这里是2

with tf.Session() as sess:
    print((sess.run(y)))

#输出:
    [[1 2 7 8]
     [4 5 6 9]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、tf.contrib.rnn.BasicLSTMCell()

该函数是基础的LSTM循环网络单元(即:block)。将forget_bias(默认值:1)添加到忘记门的偏差(biases)中以便在训练开始时减少以往的比例(scale)。该神经元不允许单元裁剪(cell clipping),也不使用peep-hole连接,它是一个基本的LSTM神经元。想要更高级的模型可以使用:tf.nn.rnn_cell.LSTMCell。tf.contrib.rnn.BasicLSTMCell()函数定义如下:

##########当使用函数缺省参数时,函数的默认参数如下:
cell = tf.contrib.rnn.BasicLSTMCell(num_units, forget_bias=1.0, state_is_tuple=True,
                                   activation=None, reuse=None,name=None,dtype=None)  
  • 1
  • 2
  • 3

tf.nn.rnn_cell.LSTMCell()函数定义

tf.nn.rnn_cell.BasicLSTMCell(num_units, forget_bias=1.0, state_is_tuple=True,
                                   act
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/785907
推荐阅读
相关标签
  

闽ICP备14008679号