From 79cca4ac8039348c69e015c1717092b055082509 Mon Sep 17 00:00:00 2001 From: Eren Golge Date: Fri, 15 Nov 2019 14:30:28 +0100 Subject: [PATCH] more loss tests --- layers/losses.py | 4 ++-- tests/test_layers.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/layers/losses.py b/layers/losses.py index 79f5b381..e7ecff5f 100644 --- a/layers/losses.py +++ b/layers/losses.py @@ -18,7 +18,7 @@ class L1LossMasked(nn.Module): length: A Variable containing a LongTensor of size (batch,) which contains the length of each data in a batch. Returns: - loss: An average loss value masked by the length. + loss: An average loss value in range [0, 1] masked by the length. """ # mask: (batch, max_len, 1) target.requires_grad = False @@ -44,7 +44,7 @@ class MSELossMasked(nn.Module): length: A Variable containing a LongTensor of size (batch,) which contains the length of each data in a batch. Returns: - loss: An average loss value masked by the length. + loss: An average loss value in range [0, 1] masked by the length. """ # mask: (batch, max_len, 1) target.requires_grad = False diff --git a/tests/test_layers.py b/tests/test_layers.py index f4f8b804..6e3c4b13 100644 --- a/tests/test_layers.py +++ b/tests/test_layers.py @@ -118,6 +118,7 @@ class EncoderTests(unittest.TestCase): class L1LossMaskedTests(unittest.TestCase): def test_in_out(self): + # test input == target layer = L1LossMasked() dummy_input = T.ones(4, 8, 128).float() dummy_target = T.ones(4, 8, 128).float() @@ -125,11 +126,14 @@ class L1LossMaskedTests(unittest.TestCase): output = layer(dummy_input, dummy_target, dummy_length) assert output.item() == 0.0 + # test input != target dummy_input = T.ones(4, 8, 128).float() dummy_target = T.zeros(4, 8, 128).float() dummy_length = (T.ones(4) * 8).long() output = layer(dummy_input, dummy_target, dummy_length) assert output.item() == 1.0, "1.0 vs {}".format(output.data[0]) + + # test if padded values of input makes any difference dummy_input = T.ones(4, 8, 128).float() dummy_target = T.zeros(4, 8, 128).float() dummy_length = (T.arange(5, 9)).long() @@ -137,3 +141,11 @@ class L1LossMaskedTests(unittest.TestCase): (sequence_mask(dummy_length).float() - 1.0) * 100.0).unsqueeze(2) output = layer(dummy_input + mask, dummy_target, dummy_length) assert output.item() == 1.0, "1.0 vs {}".format(output.data[0]) + + dummy_input = T.rand(4, 8, 128).float() + dummy_target = dummy_input.detach() + dummy_length = (T.arange(5, 9)).long() + mask = ( + (sequence_mask(dummy_length).float() - 1.0) * 100.0).unsqueeze(2) + output = layer(dummy_input + mask, dummy_target, dummy_length) + assert output.item() == 0, "0 vs {}".format(output.data[0])