【发布时间】:2021-05-16 15:32:25
【问题描述】:
【问题讨论】:
【问题讨论】:
在 PyTorch 中实现孪生神经网络就像在不同的输入上调用网络函数两次一样简单。
mynet = torch.nn.Sequential(
nn.Linear(10, 512),
nn.ReLU(),
nn.Linear(512, 2))
...
output1 = mynet(input1)
output2 = mynet(input2)
...
loss.backward()
在调用loss.backwad() 时,PyTorch 将自动对来自mynet 的两次调用的梯度求和。
你可以找到一个完整的例子here。
【讨论】:
same class vs. different class)。也可以使用 Triplet 损失、香草铰链损失等。因为孪生网络经常被用来创建具有强区分性的嵌入,所以诸如三元组损失或铰链损失之类的损失——强调在不同类别的嵌入之间施加边距——在这种情况下确实很常见。但是交叉熵损失也是一个有效的选择。