Siamese Neural Network in Pytorch
How can I implement a siamese neural network in PyTorch?


  What is a siamese neural network? A siamese neural network consists in two identical neural networks, each one taking one input. Identical means that the two neural networks have the exact same architecture and share the same weights.




Implementing siamese neural networks in PyTorch is as simple as calling the network function twice on different inputs.

mynet = torch.nn.Sequential(
        nn.Linear(10, 512),
        nn.ReLU(),
        nn.Linear(512, 2))
...
output1 = mynet(input1)
output2 = mynet(input2)
...
loss.backward()


When invoking loss.backwad(), PyTorch will automatically sum the gradients coming from the two invocations of mynet.

You can find a full-fledged example here.
