要查看它是否使我的模型训练更有效,我尝试仅在指定的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()
或其他任何方式来实现?