我对LSTM细胞生成的全局变量的详细索引有疑问。
placeholders = {"inputs":tf.placeholder(tf.float32, shape=[None, None, 1000])}
cell = tf.nn.rnn_cell.BasicLSTMCell(80)
outs, states = tf.nn.dynamic_rnn(cell=cell, inputs=placeholders["inputs"], dtype=tf.float32)
此图形构建为我们提供了tf.global_variables()列表,如下所示:
[<tf.Variable 'rnn/basic_lstm_cell/kernel:0' shape=(1080, 320) dtype=float32_ref>, <tf.Variable 'rnn/basic_lstm_cell/bias:0' shape=(320,) dtype=float32_ref>]
我的问题是关于变量'rnn / basic_lstm_cell / kernel:0'的索引集。 根据BasicLSTMCell(https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/python/ops/rnn_cell_impl.py#L537)的源文件,该变量有两种向量:第一种用于隐藏权重,第二种用于循环状态。
以下内核变量索引分区是否正确?
隐藏权重和循环状态分别对应于tf.slice(var,[0:0],[1000,320]和tf.slice(var,[1000:0],[1080:320]), “var”rnn / basic_lstm_cell /内核变量?
也就是说,第一个1000(=输入序列的dimenrnn / basic_lstm_cell / kernelsionality)索引用于隐藏权重,接下来的80(= num_units)索引用于循环状态。