我正在尝试使用张量流中的LSTM创建多层RNN。我在Ubuntu 14.04上使用Tensorflow版本0.9.0和python 2.7。
但是,我一直收到以下错误:
tensorflow.python.framework.errors.InvalidArgumentError: Expected begin[1] in [0, 2000], but got 4000
当我使用
时rnn_cell.MultiRNNCell([cell]*num_layers)
如果num_layers大于1。
我的代码:
size = 1000
config.forget_bias = 1
and config.num_layers = 3
cell = rnn_cell.LSTMCell(size,forget_bias=config.forget_bias)
cell_layers = rnn_cell.MultiRNNCell([cell]*config.num_layers)
我也希望能够切换到使用GRU单元,但这给了我同样的错误:
Expected begin[1] in [0, 1000], but got 2000
我已尝试明确设置
num_proj = 1000
也没有帮助。
这与我使用连接状态有关吗?正如我试图设置
state_is_tuple=True
给出:
`ValueError: Some cells return tuples of states, but the flag state_is_tuple is not set. State sizes are: [LSTMStateTuple(c=1000, h=1000), LSTMStateTuple(c=1000, h=1000), LSTMStateTuple(c=1000, h=1000)]`
非常感谢任何帮助!
答案 0 :(得分:0)
我不确定为什么会这样,但是我在一个辍学包装中添加了。即。
if Training:
cell = rnn_cell.DropoutWrapper(cell,output_keep_prob=config.keep_prob)
现在它有效。 这适用于LSTM和GRU单元。
答案 1 :(得分:0)
发生此问题的原因是您增加了GRU单元格的图层,但初始向量不会加倍。如果您的initial_vector大小为[batch_size,50]。
然后initial_vector = tf.concat(1,[initial_vector] * num_layers)
现在将此输入到解码器作为初始向量。