一.将lstm改为gru。
cell_forward = tf.contrib.rnn.BasicLSTMCell(unit_num) cell_backward = tf.contrib.rnn.BasicLSTMCell(unit_num)
改为
cell_forward = tf.nn.rnn_cell.GRUCell(unit_num) cell_backward = tf.nn.rnn_cell.GRUCell(unit_num)
二.多层RNN结构
_fw_cells = [] _bw_cells = [] for _ in range(2): cell_forward = tf.contrib.rnn.BasicLSTMCell(unit_num) cell_backward = tf.contrib.rnn.BasicLSTMCell(unit_num) _fw_cells.append(tf.nn.rnn_cell.DropoutWrapper(cell_forward, output_keep_prob=0.6)) _bw_cells.append(tf.nn.rnn_cell.DropoutWrapper(cell_backward, output_keep_prob=0.6)) cell_forward = tf.nn.rnn_cell.MultiRNNCell(_fw_cells) cell_backward = tf.nn.rnn_cell.MultiRNNCell(_bw_cells)
三.损失函数添加L2正则项
self.loss = tf.reduce_mean(-self.log_likelihood) #L2正则 self.l2_loss = self._l2_rate * (tf.nn.l2_loss(W) + tf.nn.l2_loss(b)) self.loss = self.loss + self.l