Hey @AjayTalati,
there is no reverse of the embedding per se.
The famous king-man+woman demo then outputs the nearest vectors according to some (possibly after scaling to unit norm as in “cosine similarity”) distance function.
So if your embedding weights are unit-length vectors you can do (similar to gensim most_similar calculate analogy word vector 51 and then compute the distance 34 ). Note that the matrix multiplication is a “batch dot product”.
# have an embedding
t = torch.nn.Embedding(100,10)

# normalize rows
normalized_embedding = t.weight/((t.weight**2).sum(0)**0.5).expand_as(t.weight)

# make up some vecotr
v = 1*t.weight[1]+0.1*t.weight[5]
# no
v = v / ((v**2).sum()**0.5).expand_as(v)

# similarity score (-1..1) and vocabulary indices
similarity, words = torch.topk(torch.mv(normalized_embedding,v),5)

(Maximal dot product is minimal Euclidian distance for unit vectors per $|x-y| = |x| - 2 x \cdot y + |y| $.)
For non-unit vectors you would need to compute the distances, e.g. by storing the lengths of the word vectors to compute $argmin_i |x(i)|-2 x(i) \cdot y$.
Of course, if you scoll down the linked gensim file, you’ll find lots of better ideas, with references. 
That said, you might also just skip the word vectors in output. In OpenNMT’s train.py L293-295 15 the following single layer + softmax transforms the (not “word vector”, but some learnt hidden representation) output of the decoder:
generator = nn.Sequential(
        nn.Linear(opt.rnn_size, dicts['tgt'].size()),
        nn.LogSoftmax())

Best regards
Thomas