我的问题是关于元素动态或静态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。
为什么内核的维数会增加?
答案 0 :(得分:0)
根据tensorflow实现:BasicLSTMCell source code。 kernel
的形状为[input_depth + h_depth, 4 * num_units]
,其中input_depth
是您的输入向量维度,h_depth
是您隐藏的单位数。所以你的内核形状是[1 + 80, 4 * 80]
。