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))
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)
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)
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)
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)
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)