为什么在lstm单元格的动态(或静态)rnn输出中的tensorflow变量具有加一维度?

时间:2018-01-28 05:32:19

标签: python tensorflow neural-network lstm rnn

我的问题是关于元素动态或静态rnn输出的维数。

nlu_input = tf.placeholder(tf.float32, shape=[4,1607,1])
cell = tf.nn.rnn_cell.BasicLSTMCell(80)
outts, states = tf.nn.dynamic_rnn(cell=cell, inputs=nlu_input, dtype=tf.float32)

然后tf.gloabal_valiables()返回以下列表。

[<tf.Variable 'rnn/basic_lstm_cell/kernel:0' shape=(81, 320) dtype=float32_ref>,<tf.Variable 'rnn/basic_lstm_cell/bias:0' shape=(320,) dtype=float32_ref>]

我期待tf.Variable&#39; rnn / basic_lstm_cell / kernel:0&#39; shape =(80,320),因为320 = 4 * 80且单位数为80。

  

为什么内核的维数会增加?

1 个答案:

答案 0 :(得分:0)

根据tensorflow实现:BasicLSTMCell source codekernel的形状为[input_depth + h_depth, 4 * num_units],其中input_depth是您的输入向量维度,h_depth是您隐藏的单位数。所以你的内核形状是[1 + 80, 4 * 80]