def testParallelEncoderReuse(self): lengths = [tf.constant([2, 5, 4], dtype=tf.int32), tf.constant([6, 6, 3], dtype=tf.int32)] inputs = [tf.zeros([3, 5, 10]), tf.zeros([3, 6, 10])] encoder = encoders.ParallelEncoder(DenseEncoder(2, 20), outputs_reducer=None) outputs, _, _ = encoder(inputs, sequence_length=lengths) outputs = self.evaluate(outputs) self.assertIsInstance(outputs, tuple) self.assertEqual(len(outputs), 2)
def testParallelEncoderReuse(self): lengths = [tf.constant([2, 5, 4], dtype=tf.int32), tf.constant([6, 6, 3], dtype=tf.int32)] inputs = [tf.zeros([3, 5, 10]), tf.zeros([3, 6, 10])] encoder = encoders.ParallelEncoder(DenseEncoder(2, 20), outputs_reducer=None) outputs, _, _ = encoder.encode(inputs, sequence_length=lengths) if not compat.is_tf2(): with self.test_session() as sess: sess.run(tf.global_variables_initializer()) outputs = self.evaluate(outputs) self.assertIsInstance(outputs, tuple) self.assertEqual(len(outputs), 2)
def testParallelEncoder(self): sequence_lengths = [[3, 5, 2], [6, 6, 4]] inputs = [tf.zeros([3, 5, 10]), tf.zeros([3, 6, 10])] encoder = encoders.ParallelEncoder( [DenseEncoder(1, 20), DenseEncoder(2, 20)], outputs_reducer=reducer.ConcatReducer(axis=1)) outputs, state, encoded_length = encoder( inputs, sequence_length=sequence_lengths) self.assertEqual(len(state), 3) outputs, encoded_length = self.evaluate([outputs, encoded_length]) self.assertAllEqual([3, 11, 20], outputs.shape) self.assertAllEqual([9, 11, 6], encoded_length)
def _encodeInParallel(self, inputs, sequence_length=None, outputs_layer_fn=None, combined_output_layer_fn=None): columns = [DenseEncoder(1, 20), DenseEncoder(1, 20)] encoder = encoders.ParallelEncoder( columns, outputs_reducer=reducer.ConcatReducer(), outputs_layer_fn=outputs_layer_fn, combined_output_layer_fn=combined_output_layer_fn) outputs, _, _ = encoder(inputs, sequence_length=sequence_length) return self.evaluate(outputs)
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 testParallelEncoder(self): sequence_lengths = [[3, 5, 2], [6, 6, 4]] inputs = [tf.zeros([3, 5, 10]), tf.zeros([3, 6, 10])] encoder = encoders.ParallelEncoder( [DenseEncoder(1, 20), DenseEncoder(2, 20)], outputs_reducer=reducer.ConcatReducer(axis=1)) outputs, state, encoded_length = encoder.encode( inputs, sequence_length=sequence_lengths) self.assertEqual(len(state), 3) if not compat.is_tf2(): with self.test_session() as sess: sess.run(tf.global_variables_initializer()) outputs, encoded_length = self.evaluate([outputs, encoded_length]) self.assertAllEqual([3, 11, 20], outputs.shape) self.assertAllEqual([9, 11, 6], encoded_length)
def _encodeInParallel(self, inputs, sequence_length=None, outputs_layer_fn=None, combined_output_layer_fn=None): columns = [DenseEncoder(1, 20), DenseEncoder(1, 20)] encoder = encoders.ParallelEncoder( columns, outputs_reducer=reducer.ConcatReducer(), outputs_layer_fn=outputs_layer_fn, combined_output_layer_fn=combined_output_layer_fn) outputs, _, _ = encoder.encode(inputs, sequence_length=sequence_length) if not compat.is_tf2(): with self.test_session() as sess: sess.run(tf.global_variables_initializer()) return self.evaluate(outputs)