示例#1
0
 def _build_cudnn_rnn(self, units, n_hidden_list, cell_type, intra_layer_dropout, mask):
     sequence_lengths = tf.to_int32(tf.reduce_sum(mask, axis=1))
     for n, n_hidden in enumerate(n_hidden_list):
         with tf.variable_scope(cell_type.upper() + '_' + str(n)):
             if cell_type.lower() == 'lstm':
                 units, _ = cudnn_bi_lstm(units, n_hidden, sequence_lengths)
             elif cell_type.lower() == 'gru':
                 units, _ = cudnn_bi_gru(units, n_hidden, sequence_lengths)
             else:
                 raise RuntimeError('Wrong cell type "{}"! Only "gru" and "lstm"!'.format(cell_type))
             units = tf.concat(units, -1)
             if intra_layer_dropout and n != len(n_hidden_list) - 1:
                 units = variational_dropout(units, self._dropout_ph)
         return units
示例#2
0
 def _build_cudnn_rnn(self, units, n_hidden_list, cell_type, intra_layer_dropout, mask):
     sequence_lengths = tf.to_int32(tf.reduce_sum(mask, axis=1))
     for n, n_hidden in enumerate(n_hidden_list):
         with tf.variable_scope(cell_type.upper() + '_' + str(n)):
             if cell_type.lower() == 'lstm':
                 units, _ = cudnn_bi_lstm(units, n_hidden, sequence_lengths)
             elif cell_type.lower() == 'gru':
                 units, _ = cudnn_bi_gru(units, n_hidden, sequence_lengths)
             else:
                 raise RuntimeError('Wrong cell type "{}"! Only "gru" and "lstm"!'.format(cell_type))
             units = tf.concat(units, -1)
             if intra_layer_dropout and n != len(n_hidden_list) - 1:
                 units = variational_dropout(units, self._dropout_ph)
         return units