如果使用tf.cond()仅在辍学率> 0时尝试仅构造DropoutWrapper操作时出错

时间:2018-09-05 15:43:02

标签: python tensorflow

要查看它是否使我的模型训练更有效,我尝试仅在指定的DropoutWrapper大于0的情况下调用TensorFlow的dropout_rate操作(而不是创建操作,但不是实际添加任何辍学)。我还尝试通过向损失值中添加L2正则化来做同样的事情-仅在l2_alpha乘数值大于零时才执行我的计算L2损失的方法。

这是我尝试实现辍学的方式:

layers = []
for layer_size in self.hidden_sizes:
    cell = self.cell_type(layer_size)
    cell = tf.cond(
        self.dropout_rate > 0.0,
        lambda: tensorflow.contrib.rnn.DropoutWrapper(cell, output_keep_prob=(1.0 - self.dropout_rate)),
        lambda: cell
    )
    layers.append(cell)
stacked_layers = tensorflow.contrib.rnn.MultiRNNCell(layers)

这将引发错误:

`TypeError: Failed to convert object of type <class 'tensorflow.python.ops.rnn_cell_impl.DropoutWrapper'> to Tensor. Contents: <tensorflow.python.ops.rnn_cell_impl.DropoutWrapper object at 0x7fa51b84bbe0>. Consider casting elements to a supported type.`

有没有一种方法可以使用tf.cond()或其他任何方式来实现?

0 个答案:

没有答案