BasicLSTMCell中num_units参数解释

前言

  • 关于LSTM原理: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • 关于LSTM原理(译文):https://blog.csdn.net/Jerr__y/article/details/58598296
  • 关于Tensorflow+LSTM的使用:https://www.knowledgemapper.com/knowmap/knowbook/[email protected](MNISTdataset)
  • 关于Tensorflow+LSTM的使用(译文):https://yq.aliyun.com/articles/202939

正文

本文只是介绍tensorflow中的BasicLSTMCell中num_units,关于LSTM和如何使用请看前言的教程。
在使用Tensorflow跑LSTM的试验中, 有个num_units的参数,这个参数是什么意思呢?

先总结一下,num_units这个参数的大小就是LSTM输出结果的维度。例如num_units=128, 那么LSTM网络最后输出就是一个128维的向量。

我们先换个角度举个例子,最后再用公式来说明。

假设在我们的训练数据中,每一个样本 x 是 28*28 维的一个矩阵,那么将这个样本的每一行当成一个输入,通过28个时间步骤展开LSTM,在每一个LSTM单元,我们输入一行维度为28的向量,如下图所示。
这里写图片描述

那么,对每一个LSTM单元,参数 num_units=128 的话,就是每一个单元的输出为 128*1 的向量,在展开的网络维度来看,如下图所示,对于每一个输入28维的向量,LSTM单元都把它映射到128维的维度, 在下一个LSTM单元时,LSTM会接收上一个128维的输出,和新的28维的输入,处理之后再映射成一个新的128维的向量输出,就这么一直处理下去,知道网络中最后一个LSTM单元,输出一个128维的向量。
这里写图片描述

从LSTM的公式的角度看是什么原理呢?我们先看一下LSTM的结构和公式:
这里写图片描述

参数 num_units=128 的话,

  1. 对于公式 (1) , h = 128 ∗ 1 h = 128 ∗ 1 h = 128 ∗ 1 h=128∗1h=128∗1 h=128*1 h=1281h=1281h=12811281 的向量。

    以上就是 num_units 参数的含义。

    如有错误请指出谢谢

    参考链接:

    https://stackoverflow.com/questions/37901047/what-is-num-units-in-tensorflow-basiclstmcell
    https://www.zhihu.com/question/64470274

                                    

你可能感兴趣的:(tensorflow)