def testPyramidalEncoderShortSequences(self): sequence_length = [3, 4, 2] inputs = tf.zeros([3, 4, 5]) encoder = encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2) outputs, state, encoded_length = encoder( inputs, sequence_length=sequence_length) encoded_length = self.evaluate(encoded_length) self.assertAllEqual([1, 1, 1], encoded_length)
def testPyramidalEncoderShortSequences(self): sequence_length = [3, 4, 2] inputs = _build_dummy_sequences(sequence_length) encoder = encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2) outputs, state, 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([1, 1, 1], encoded_length)
def testPyramidalEncoder(self): sequence_length = [17, 21, 20] inputs = tf.zeros([3, 21, 5]) encoder = encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2) outputs, state, encoded_length = encoder( inputs, sequence_length=sequence_length) self.assertEqual(3, len(state)) outputs, encoded_length = self.evaluate([outputs, encoded_length]) self.assertAllEqual([3, 6, 10], outputs.shape) self.assertAllEqual([4, 5, 5], encoded_length)
def testPyramidalEncoder(self): sequence_length = [17, 21, 20] inputs = _build_dummy_sequences(sequence_length) encoder = encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2) 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, 6, 10], outputs.shape) 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)]) _, _, 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 testPyramidalEncoder(self): sequence_length = [17, 21, 20] inputs = _build_dummy_sequences(sequence_length) encoder = encoders.PyramidalRNNEncoder(3, 10, reduction_factor=2) outputs, state, encoded_length = encoder.encode( inputs, sequence_length=sequence_length) self.assertEqual(3, len(state)) for s in state: self.assertIsInstance(s, tf.nn.rnn_cell.LSTMStateTuple) with self.test_session() as sess: sess.run(tf.global_variables_initializer()) outputs, encoded_length = sess.run([outputs, encoded_length]) self.assertAllEqual([3, 6, 10], outputs.shape) 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)
def __init__(self): super(ListenAttendSpell, self).__init__( source_inputter=inputters.SequenceRecordInputter(input_depth=40), target_inputter=inputters.WordEmbedder(embedding_size=50), encoder=encoders.PyramidalRNNEncoder( num_layers=3, num_units=512, reduction_factor=2, cell_class=tf.keras.layers.LSTMCell, dropout=0.3), decoder=decoders.AttentionalRNNDecoder( num_layers=3, num_units=512, attention_mechanism_class=tfa.seq2seq.LuongMonotonicAttention, cell_class=tf.keras.layers.LSTMCell, dropout=0.3, residual_connections=False, first_layer_attention=True))