Tensorflow RNN切片错误

时间:2016-07-04 11:10:19

标签: python-2.7 tensorflow

我正在尝试使用张量流中的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)]`

非常感谢任何帮助!

2 个答案:

答案 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)

现在将此输入到解码器作为初始向量。