当使用dynamic_rnn
时,需要一个名为initial_state
的参数。一个简单的解决方案是
initial_state = lstm_cell.zero_state(batch_size, tf.float32)
但我想将初始状态设置为可以优化的参数,我该怎么办?
我可以定义两个名为h0
和c0
的trainable_variables,它们是两个向量。但dynamic_rnn
需要两个矩阵,其中第一个维度为batch_size
。如何将向量h0
展开为每行为h0
的矩阵?
答案 0 :(得分:3)
如果你这样做会怎么样?
initial_state_vector = tf.get_variable('initial_state_vector', [1, state_size])
initial_state = tf.tile(initial_state_vector, batch_size)
然后你可以将initial_state
变量提供给LSTM,它的大小合适。