具有张量流的多维动态rnn

时间:2016-12-29 20:40:36

标签: tensorflow recurrent-neural-network

在tensorflow的dynamic_rnn函数中,我对输出形状感到惊讶,我希望有人可以帮助我提高对RNN细胞的理解。

例如,如果输入定义为:

x = tf.placeholder(tf.float32, [110, seq_size, input_dim])

其中seq_size = 5且input_dim = 2(即两个时间序列),110是批量大小;并且单元格被定义为,

cell = rnn_cell.BasicLSTMCell(hidden_dim)

其中hidden_​​dim = 6

当我创建dynamic_rnn

outputs, states = rnn.dynamic_rnn(cell, x, dtype=tf.float32)

并检查输出的大小[110 5 6]。这些维度是seq_size by hidden_​​dim的批量大小。

问题:

1:这些维度意味着时间序列中每个时间步有6个隐藏节点,总共30个隐藏节点(5 x 6),而不是总共6个隐藏节点。这是正确的解释吗?

2:由于我的输入维度是5 x 2(每个序列中有5个步骤和2个序列),在每个时间步长将输入连接到隐藏节点的张量流如何?张量流是否假设一个完全连通的图形,在每个隐藏单元格之前有2个输入,12个权重和6个偏差?或其他什么?

1 个答案:

答案 0 :(得分:1)

您可以将序列视为句子,将输入视为单词。序列长度是句子中的单词数,也是LSTM中隐藏节点的数量;每个输入/字对应于一个隐藏节点,该节点将输入映射到一个输出。这就是输出数量为seq_size(5)的原因。

单词是一个矢量,位于多维空间中,其维数为input_dim。在LSTM中,单词从此输入空间映射到维度数为hidden_​​dim的更高维空间。这就是为什么每个输出的大小是hidden_​​dim(6)。

我相信时代是这次讨论的一个无关紧要的概念。请参阅The meaning of batch_size in ptb_word_lm (LSTM model of tensorflow)