我正在尝试使用 tensorflow 创建循环神经网络。我的代码是这样的:
import tensorflow as tf
rnn_cell = tf.nn.rnn_cell.GRUCell(3)
inputs = [tf.constant([[0, 1]], dtype=tf.float32), tf.constant([[2, 3]], dtype=tf.float32)]
outputs, end = tf.nn.rnn(rnn_cell, inputs, dtype=tf.float32)
现在,一切运行良好。但是,我对实际发生的事情感到困惑。输出维度始终是批大小 x rnn 单元隐藏状态的大小 - 它们如何完全独立于输入大小?
如果我的理解是正确的,输入会在每一步连接到 rnn 的隐藏状态,然后乘以权重矩阵(以及其他操作)。这意味着权重矩阵的维度需要依赖于输入大小,这是不可能的,因为 rnn_cell 是在输入声明之前创建的!