Neural network softmax版三重态损耗的梯度计算

Neural network softmax版三重态损耗的梯度计算,neural-network,deep-learning,caffe,gradient-descent,softmax,Neural Network,Deep Learning,Caffe,Gradient Descent,Softmax,我一直在尝试在Caffe中实现中描述的三重态丢失的softmax版本 我已经试过了,但是我发现很难计算梯度,因为指数中的L2不是平方 有人能帮我吗 这是一道数学题,但它来了。第一个等式是你习惯的,第二个等式是当它不是平方时你会做什么 使用现有的caffe层实现L2规范可以省去所有的麻烦 这里有一种方法可以计算底部x1和x2的caffe中的| x1-x2 | | | u2假设x1和x2是B-by-C blob,计算C维差的B范数 layer { name: "x1-x2" type: "

我一直在尝试在Caffe中实现中描述的三重态丢失的softmax版本

我已经试过了,但是我发现很难计算梯度,因为指数中的L2不是平方


有人能帮我吗

这是一道数学题,但它来了。第一个等式是你习惯的,第二个等式是当它不是平方时你会做什么


使用现有的caffe层实现L2规范可以省去所有的麻烦

这里有一种方法可以计算底部x1和x2的caffe中的| x1-x2 | | | u2假设x1和x2是B-by-C blob,计算C维差的B范数

layer {
  name: "x1-x2"
  type: "Eltwise"
  bottom: "x1"
  bottom: "x1"
  top: "x1-x2"
  eltwise_param { 
    operation: SUM
    coeff: 1 coeff: -1
  }
}
layer {
  name: "sqr_norm"
  type: "Reduction"
  bottom: "x1-x2"
  top: "sqr_norm"
  reduction_param { operation: SUMSQ axis: 1 }
}
layer {
  name: "sqrt"
  type: "Power"
  bottom: "sqr_norm"
  top: "sqrt"
  power_param { power: 0.5 }
}
对于本文中定义的三重态损耗,您需要计算x-x+和x-x-,concat这两个blob的L2范数,并将concat blob馈送到Softmax层。
不需要肮脏的梯度计算。

@Naman如果你打算使用caffe,你最好检查一下现有的图层:这些是你的构建块!你越了解他们,你的生活就越轻松!还有一件事,更多的是关于Caffe的内存使用。如果我必须做L2规范化,那该怎么做?我可以先进行缩减,然后再进行重塑,然后再进行eltwise层,但这会比在一个层中实现整体更需要内存吗?我试图通过发现一个问题来实现这个解决方案。纸张有点像欧几里得损失。那么在Softmax之后,我是否需要将输出提供给欧几里德损失层?很抱歉打扰您,但我仍然无法了解如何才能做到这一点?有了Caffe,我怎样才能给欧几里得损失一个常量向量作为标签呢?对于所有的例子,都是向量0,1。在Caffe里有什么办法吗?你能不能把提名人和分母除以2?当然可以,我只是把整件事都包括进去,以避免混淆