Esempio n. 1
0
 def sorted_rnn(self, sequences, sequence_lengths, rnn):
   sorted_inputs, sorted_sequence_lengths, restoration_indices = sort_batch_by_length(sequences, sequence_lengths)
   # print(sorted_inputs)
   # print(sorted_sequence_lengths.data.tolist())
   packed_sequence_input = pack_padded_sequence(sorted_inputs,
                                                list(map(int, sorted_sequence_lengths.data.tolist())),
                                                batch_first=True)
   packed_sequence_output, _ = rnn(packed_sequence_input, None)
   unpacked_sequence_tensor, _ = pad_packed_sequence(packed_sequence_output, batch_first=True)
   return unpacked_sequence_tensor.index_select(0, restoration_indices)
Esempio n. 2
0
 def sorted_rnn(self, sequences, sequence_lengths, rnn):
     sorted_inputs, sorted_sequence_lengths, restoration_indices = sort_batch_by_length(
         sequences, sequence_lengths)
     packed_sequence_input = pack_padded_sequence(
         sorted_inputs,
         sorted_sequence_lengths.data.tolist(),
         batch_first=True)  #压缩:去除多余的PAD的影响
     packed_sequence_output, _ = rnn(packed_sequence_input, None)
     unpacked_sequence_tensor, _ = pad_packed_sequence(
         packed_sequence_output, batch_first=True)  #解压
     return unpacked_sequence_tensor.index_select(
         0, restoration_indices)  #返回复原后的经过LSTM的embed
Esempio n. 3
0
 def sorted_rnn(self, sequences, sequence_lengths, rnn):
     sorted_inputs, sorted_sequence_lengths, restoration_indices = sort_batch_by_length(
         sequences, sequence_lengths)
     packed_sequence_input = pack_padded_sequence(
         sorted_inputs,
         sorted_sequence_lengths.data.long().tolist(),
         batch_first=True)
     # except RuntimeError:
     #   print(sequences)
     #   print(sequence_lengths)
     #   exit()
     packed_sequence_output, _ = rnn(packed_sequence_input, None)
     unpacked_sequence_tensor, _ = pad_packed_sequence(
         packed_sequence_output, batch_first=True)
     return unpacked_sequence_tensor.index_select(0, restoration_indices)