【问题标题】:Multi-dimension dynamic rnn with tensorflow带张量流的多维动态 rnn
【发布时间】:2016-12-29 20:40:36
【问题描述】:

在 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]。这些维度是 s​​eq_size 和 hidden_​​dim 的批量大小。

问题:

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

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

【问题讨论】:

  • 问题1:每个序列有5个隐藏节点,每个隐藏节点对应一个输入/词。问题 2:每个输入都是二维空间中的一个向量(以您的示例为例)。
  • 不理解数字1的答案。我原本也是这么想的,每个单词/输入都会有一个隐藏节点,但上面输出的维度似乎表明情况并非如此.在上面的例子中,每个批次元素都有 [1 5 6],所以有 30 个输出。此外,隐藏节点的数量是 Cell 的自变量,如github.com/aymericdamien/TensorFlow-Examples/blob/master/… 等示例所示。
  • 我认为 [1 5 6] 表示有 5 个输出,每个输出是一个 6 维向量。你提供了 [1 5 2],意思是 5 个输入,每个输入都是一个二维向量。
  • 我明白了。看看方程式,我想我明白你在说什么。 H(t) = f(Winx(t)+WhH(t-1))。我原本以为 x 是 5 x 2,当我指定隐藏单元格的数量时,我指定了 W 的行空间,即 6 x 5,这将导致 6 x 2 输出,但是,看来你说 x 是 2 x 5,而 Win 是 6 x 2,这导致 6 x 5 输出。

标签: tensorflow recurrent-neural-network


【解决方案1】:

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

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

我认为 epoch 与此讨论无关。请看The meaning of batch_size in ptb_word_lm (LSTM model of tensorflow)

【讨论】:

  • 更新了问题,使其更加清晰。我想我的具体问题在于“一个单词从这个输入空间映射到更高维空间”这句话。映射是如何完成的?如果我的话在Real N-D空间中,每个维度如何映射到更高维度的空间(隐藏空间)。
  • 通过将 input_vector 与 weight_matrix 相乘来扩展维度,其中 weight_matrix 的大小为 input_dim x output_dim。
  • 另外,鉴于链接,我意识到我在查看 tensorflow 时使用 epoch 作为一个重载术语。上述问题中的 Epoch 被用作多个时间序列中的特定输入行(时间上的一个实例,即 seq_size 中的一个实例),而不是传统的 tensorflow 流使用批量传递。
  • 我认为 epoch 不会以这种方式超载,这会让每个人都感到困惑。它在神经网络训练中有其特定的含义。
  • 替换使用 epoch 更符合神经网络。
猜你喜欢
  • 1970-01-01
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多