双向LSTM的Dropout层怎么加

来源:4-36 动手实现RNN-LSTM循环神经网络(十一):实际训练和测试

追梦逐梦白日做梦

2018-04-13

 with tf.variable_scope("ner_variables", reuse=tf.AUTO_REUSE):
            fw_cell = tf.nn.rnn_cell.BasicLSTMCell(args.rnn_size, state_is_tuple=True)
            bw_cell = tf.nn.rnn_cell.BasicLSTMCell(args.rnn_size, state_is_tuple=True)
            if is_training:
                fw_cell = tf.nn.rnn_cell.DropoutWrapper(fw_cell, output_keep_prob=0.5)
                bw_cell = tf.nn.rnn_cell.DropoutWrapper(bw_cell, output_keep_prob=0.5)
                fw_cell = tf.nn.rnn_cell.MultiRNNCell([fw_cell for _ in range(args.num_layers)], state_is_tuple=True)
                bw_cell = tf.nn.rnn_cell.MultiRNNCell([bw_cell for _ in range(args.num_layers)], state_is_tuple=True)
            else:
                fw_cell = tf.nn.rnn_cell.MultiRNNCell([fw_cell for _ in
                                                       range(args.num_layers)], state_is_tuple=True)
                bw_cell = tf.nn.rnn_cell.MultiRNNCell([bw_cell for _ in
                                                       range(args.num_layers)], state_is_tuple=True)

我用上面的方法加了tf.nn.rnn_cell.DropoutWrapper层,训练时候的准确率可以到达83%,可是测试的时候却只有10%多,这是怎么回事,这里的代码不对劲

写回答

1回答

Oscar

2018-04-17

你的代码和本课程没有关系。双向 LSTM 是你在别的地方学习的代码吧?

你只给出这一小段代码,我怎么知道哪里出了问题。而且训练时候的准确率和测试时候差很多不是不可能。

谢谢理解。


0
0

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程