def testLastEncoding(self):
   self._testLastEncoding(encoders.UnidirectionalRNNEncoder(
       1, 10, cell_class=tf.contrib.rnn.LSTMCell))
   self._testLastEncoding(encoders.UnidirectionalRNNEncoder(
       3, 10, cell_class=tf.contrib.rnn.LSTMCell))
   self._testLastEncoding(encoders.UnidirectionalRNNEncoder(
       1, 10, cell_class=tf.contrib.rnn.GRUCell))
   self._testLastEncoding(encoders.UnidirectionalRNNEncoder(
       3, 10, cell_class=tf.contrib.rnn.GRUCell))
Example #2
0
 def testParallelEncoderSameInput(self):
   sequence_length = [17, 21, 20]
   inputs = _build_dummy_sequences(sequence_length)
   encoder = encoders.ParallelEncoder([
       encoders.UnidirectionalRNNEncoder(1, 20),
       encoders.UnidirectionalRNNEncoder(1, 20)],
       outputs_reducer=reducer.ConcatReducer())
   outputs, _, encoded_length = encoder.encode(
       inputs, sequence_length=sequence_length)
   with self.test_session() as sess:
     sess.run(tf.global_variables_initializer())
     outputs, encoded_length = sess.run([outputs, encoded_length])
     self.assertAllEqual([3, 21, 40], outputs.shape)
     self.assertAllEqual(sequence_length, encoded_length)
Example #3
0
 def _encodeInParallel(self,
                       inputs,
                       sequence_length=None,
                       outputs_layer_fn=None,
                       combined_output_layer_fn=None):
   columns = [
       encoders.UnidirectionalRNNEncoder(1, 20),
       encoders.UnidirectionalRNNEncoder(1, 20)]
   encoder = encoders.ParallelEncoder(
       columns,
       outputs_reducer=reducer.ConcatReducer(),
       outputs_layer_fn=outputs_layer_fn,
       combined_output_layer_fn=combined_output_layer_fn)
   return encoder.encode(inputs, sequence_length=sequence_length)
Example #4
0
 def testParallelEncoder(self):
   sequence_lengths = [[17, 21, 20], [10, 9, 15]]
   inputs = [
       _build_dummy_sequences(length) for length in sequence_lengths]
   encoder = encoders.ParallelEncoder([
       encoders.UnidirectionalRNNEncoder(1, 20),
       encoders.UnidirectionalRNNEncoder(1, 20)],
       outputs_reducer=reducer.ConcatReducer(axis=1))
   outputs, _, encoded_length = encoder.encode(
       inputs, sequence_length=sequence_lengths)
   with self.test_session() as sess:
     sess.run(tf.global_variables_initializer())
     outputs, encoded_length = sess.run([outputs, encoded_length])
     self.assertAllEqual([3, 35, 20], outputs.shape)
     self.assertAllEqual([27, 30, 35], encoded_length)
Example #5
0
 def testSequentialEncoder(self):
   sequence_length = [17, 21, 20]
   inputs = _build_dummy_sequences(sequence_length)
   encoder = encoders.SequentialEncoder([
       encoders.UnidirectionalRNNEncoder(1, 20),
       encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2)])
   _, _, encoded_length = encoder.encode(
       inputs, sequence_length=sequence_length)
   with self.test_session() as sess:
     sess.run(tf.global_variables_initializer())
     encoded_length = sess.run(encoded_length)
     self.assertAllEqual([4, 5, 5], encoded_length)
Example #6
0
 def testSequentialEncoder(self):
     sequence_length = [17, 21, 20]
     inputs = _build_dummy_sequences(sequence_length)
     encoder = encoders.SequentialEncoder([
         encoders.UnidirectionalRNNEncoder(1, 20),
         encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2)
     ])
     _, state, encoded_length = encoder.encode(
         inputs, sequence_length=sequence_length)
     self.assertEqual(4, len(state))
     for s in state:
         self.assertIsInstance(s, tf.contrib.rnn.LSTMStateTuple)
     with self.test_session() as sess:
         sess.run(tf.global_variables_initializer())
         encoded_length = sess.run(encoded_length)
         self.assertAllEqual([4, 5, 5], encoded_length)