Example #1
0
 def setUp(self):
     super().setUp()
     self.encoder = ComposeEncoder([
         _make_feedforward(9, 5),
         _make_feedforward(5, 10),
         _make_feedforward(10, 3)
     ])
Example #2
0
class TestPassThroughEncoder(AllenNlpTestCase):
    def setUp(self):
        super().setUp()
        self.encoder = ComposeEncoder([
            _make_feedforward(9, 5),
            _make_feedforward(5, 10),
            _make_feedforward(10, 3)
        ])

    def test_get_dimension_is_correct(self):
        assert self.encoder.get_input_dim() == 9
        assert self.encoder.get_output_dim() == 3

    def test_composes(self):
        tensor = torch.zeros(2, 10, 9)
        output = self.encoder(tensor)

        for encoder in self.encoder.encoders:
            tensor = encoder(tensor)

        numpy.testing.assert_array_almost_equal(output.detach().cpu().numpy(),
                                                tensor.detach().cpu().numpy())

    def test_pass_through_encoder_with_mask(self):
        tensor = torch.randn([2, 3, 9])
        mask = torch.LongTensor([[1, 1, 1], [1, 0, 0]])
        output = self.encoder(tensor, mask)

        for encoder in self.encoder.encoders:
            tensor = encoder(tensor, mask)

        numpy.testing.assert_array_almost_equal(output.detach().cpu().numpy(),
                                                tensor.detach().cpu().numpy())

    def test_empty(self):
        with self.assertRaises(ValueError):
            ComposeEncoder([])

    def test_mismatched_size(self):
        with self.assertRaises(ValueError):
            ComposeEncoder([
                MockSeq2SeqEncoder(input_dim=9, output_dim=5),
                MockSeq2SeqEncoder(input_dim=1, output_dim=2),
            ])

    def test_mismatched_bidirectionality(self):
        with self.assertRaises(ValueError):
            ComposeEncoder([
                MockSeq2SeqEncoder(input_dim=9, output_dim=5),
                MockSeq2SeqEncoder(input_dim=5,
                                   output_dim=2,
                                   bidirectional=True),
            ])

    def test_all_bidirectional(self):
        ComposeEncoder([
            MockSeq2SeqEncoder(input_dim=9, output_dim=5, bidirectional=True),
            MockSeq2SeqEncoder(input_dim=5, output_dim=2, bidirectional=True),
        ])
Example #3
0
 def test_all_bidirectional(self):
     ComposeEncoder(
         [
             MockSeq2SeqEncoder(input_dim=9, output_dim=5, bidirectional=True),
             MockSeq2SeqEncoder(input_dim=5, output_dim=2, bidirectional=True),
         ]
     )
Example #4
0
 def test_mismatched_bidirectionality(self):
     with self.assertRaises(ValueError):
         ComposeEncoder(
             [
                 MockSeq2SeqEncoder(input_dim=9, output_dim=5),
                 MockSeq2SeqEncoder(input_dim=5, output_dim=2, bidirectional=True),
             ]
         )
Example #5
0
 def test_mismatched_size(self):
     with self.assertRaises(ValueError):
         ComposeEncoder(
             [
                 MockSeq2SeqEncoder(input_dim=9, output_dim=5),
                 MockSeq2SeqEncoder(input_dim=1, output_dim=2),
             ]
         )
Example #6
0
 def test_empty(self):
     with self.assertRaises(ValueError):
         ComposeEncoder([])
 def test_empty(self):
     with pytest.raises(ValueError):
         ComposeEncoder([])