def test_randomly_initialized_non_trainable(self): vocab_size = 10 emb_size = 20 trainable = False padding_idx = 0 layer = modules.EmbeddingLayer(vocab_size, emb_size, trainable, padding_idx) x = torch.tensor([[1, 2, 0], [1, 2, 3]], dtype=torch.long) x = layer(x) self.assertListEqual(list(x.shape), [2, 3, 20]) self.assertListEqual(x[0][2].tolist(), torch.tensor([0] * emb_size).tolist())
def test_randomly_initialized_trainable(self): vocab_size = 10 emb_size = 20 trainable = True padding_idx = 0 layer = modules.EmbeddingLayer(vocab_size, emb_size, trainable, padding_idx) x = torch.tensor([[1, 2, 0], [1, 2, 3]], dtype=torch.long) x = layer(x) x.sum().backward() grad = next(layer._embedding_layer.parameters()).grad self.assertListEqual(list(x.shape), [2, 3, 20]) self.assertListEqual(grad[0].tolist(), torch.tensor([0] * emb_size).tolist())
def test_non_randomly_initialized_non_trainable(self): vocab_size = 3 emb_size = 6 trainable = False padding_idx = 0 embeddings = np.array([[1, 2, 3, 4, 5, 6], [2, 5, 1, 2, 3, 4], [9, 1, 7, 2, 3, 7]]) layer = modules.EmbeddingLayer(vocab_size, emb_size, trainable, padding_idx) layer.load_embeddings(embeddings) x = torch.tensor([[1, 2, 0], [1, 2, 1]], dtype=torch.long) x = layer(x) self.assertListEqual(list(x.shape), [2, 3, emb_size]) self.assertListEqual(x[0][2].tolist(), torch.tensor(embeddings[0]).tolist())
def test_non_randomly_initialized_trainable(self): vocab_size = 3 emb_size = 6 trainable = True padding_idx = 0 embeddings = np.array([[1, 2, 3, 4, 5, 6], [2, 5, 1, 2, 3, 4], [9, 1, 7, 2, 3, 7]]) layer = modules.EmbeddingLayer(vocab_size, emb_size, trainable, padding_idx) layer.load_embeddings(embeddings) x = torch.tensor([[1, 2, 0], [1, 2, 1]], dtype=torch.long) x = layer(x) x.sum().backward() grad = next(layer._embedding_layer.parameters()).grad self.assertListEqual(list(x.shape), [2, 3, emb_size]) self.assertListEqual(grad[0].tolist(), torch.tensor([0] * emb_size).tolist())