使用以下配置为BasicLSTM
单元格:
...
num_layers = 2
num_steps = 10
hidden_size = 200
...
Run Code Online (Sandbox Code Playgroud)
我使用2隐藏层模型:
lstm_cell = rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)
cell = rnn_cell.MultiRNNCell([lstm_cell] * 2)
Run Code Online (Sandbox Code Playgroud)
什么是cell.state_size
?
我得到了30 x 800,但我无法理解它是怎么回事?
PS:请参阅https://github.com/tensorflow/tensorflow/blob/97f585d506cccc57dc98f234f4d5fcd824dd3c03/tensorflow/python/ops/rnn_cell.py#L353中的源代码
它似乎回归statesize
了2 * unitsize
.但为什么州的规模应该是单位面积的两倍?
小智 11
对于单身而言BasicLSTMCell
,(c=200, h=200)
在你的情况下,国家是一个元组.c
是200个单位(神经元)的细胞状态,是200个单位h
的隐藏状态.
要理解这一点,请考虑一个香草RNN细胞.它只有一个隐藏状态从一次性步骤传递到下一个步骤.这是BasicRNNCell
在TensorFlow中实现的情况.如果你这样做,它的状态是h = 200的单个整数tf.nn.rnn_cell.BasicRNNCell(200)
.
LSTM为纵向存储器添加了一个额外的单元层,其大小与隐藏层相同,因此LSTM的整体状态为2x200 = 400.
的引言部分文章可能有助于.
不得不说TensorFlow的文档对于初学者来说有点过于简洁.
要计算LSTM步骤,您需要应用四个函数,每个函数都包含维度 hidden_size
:
所以你需要 hidden_size * 4 = 200 * 4 = 800
在30
来自你的批量大小,因为你正在处理每批次30个样品.
这就是你的细胞记忆消耗 (30, 800)
请参阅Colah的博客文章,其中更详细地解释了这些操作.
归档时间: |
|
查看次数: |
15741 次 |
最近记录: |