Skip to content

Latest commit

 

History

History
54 lines (33 loc) · 1.88 KB

bpr_loss_cn.rst

File metadata and controls

54 lines (33 loc) · 1.88 KB

bpr_loss

.. py:function:: paddle.fluid.layers.bpr_loss(input, label, name=None)





贝叶斯个性化排序损失函数(Bayesian Personalized Ranking Loss Operator )

该OP属于pairwise类型的损失函数。损失值由下式计算而得:

Y[i] = 1/(N[i] - 1) * \sum_j{\log(\sigma(X[i, Label[i]]-X[i, j]))}
其中:
  • X :输入值,一个形为[T x D]的2-D Tensor, 此处为logit值。
  • N[i] : 在时间步i的正例和负例的总和。
  • Label[i] :在时间步i的正例下标。
  • \sigma :激活函数。
  • Y :输出值,一个形为[T x 1]的2-D Tensor。

更多细节请参考 Session Based Recommendations with Recurrent Neural Networks

参数:
  • input (Variable) - 形为[T x D] , Tensor类型时T为batch大小,LoDTensor类型时T为mini-batch的总时间步。D 为正例加负例的个数。该输入为logits而非概率。数据类型是float32或float64。
  • label (Variable) - 形为[T x 1],表示input中正例的下标,数据类型为int64。。
  • name (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` ,默认值为None。

返回: 形为[T x 1]的2D张量,数据类型同input相同,表示bpr损失值。

返回类型:Variable

代码示例:

import paddle.fluid as fluid

neg_size = 3
# label=[0]
label = fluid.layers.data(
          name="label", shape=[1], dtype="int64")
# predict = [0.1, 0.2, 0.3, 0.4]
predict = fluid.layers.data(
          name="predict", shape=[neg_size + 1], dtype="float32")
# bpr_Loss : label [0] 表示predict中下标0表示正例,即为0.1, 负例有3个为0.2,0.3,0.4
cost = fluid.layers.bpr_loss(input=predict, label=label)