使用tensorflow DropoutWrapper和LSTMBlockFusedCell

时间:2017-10-12 01:29:24

标签: tensorflow

我正在尝试将DropoutWrapper与LSTMBlockFusedCell一起使用,如下所示:

cell = tf.contrib.rnn.LSTMBlockFusedCell(num_units,forget_bias)
cell = tf.contrib.rnn.DropoutWrapper(cell,dropout)

我得到一个例外,即LSTMBlockFusedCell不是RNNCell

消息:参数单元不是RNNCell。这是在DropoutWrapper初始化期间从_like_rnncell引发的。

正在检查细胞上的那些礼物:

""Checks that a given object is an RNNCell by using duck typing."""

  conditions = [hasattr(cell, "output_size"), hasattr(cell, "state_size"),
                hasattr(cell, "zero_state"), callable(cell)] 

LSTMBlockFusedCell没有output_size,state_size或zero_state属性。

我想知道这是一个错误还是他们将LSTMBlockFusedCell作为RNNCell处理的任何其他原因。

2 个答案:

答案 0 :(得分:0)

我为tensorflow打开了一个问题,这似乎是一个bug。 https://github.com/tensorflow/tensorflow/issues/13649

答案 1 :(得分:0)

issue建议在输入时使用tf.nn.dropout作为解决方法,他们并不打算在LSTMBlockFusedCell中实施退出或当时修复DropoutWrapper。但我认为tf.layers.dropout可能更容易使用,因为它提供了training参数。