【问题标题】:Custom metric for Keras in RR 中 Keras 的自定义指标
【发布时间】:2020-12-02 20:58:33
【问题描述】:

我想创建一个自定义指标,以便在 R 中训练一个完全连接的神经网络。问题是我无法弄清楚如何将语法传递给 R tensorflow。 所需的功能是这样的:

fganancia   <- function(probs, data)
{
tbl <- as.data.table( list( "prob"=probs, "gan"= ifelse( data==1, 29250, -750 ) ) )
setorder( tbl, -prob )
tbl[ , gan_acum :=  cumsum( gan ) ]
gan <- max( tbl$gan_acum )
return(  gan  )
}

如果这是一个列表,我想根据y_prob 对这个列表进行排序(y_true 会受到这种排序的影响)。然后根据y_true的值(0或1)为y_true分配2个不同的值,最后计算累积和,得到最大值。

是否可以在 R tensorflow 中重现这一点?

【问题讨论】:

    标签: r tensorflow keras


    【解决方案1】:

    经过一整天的研究解决。这将是 keras tensorflow 的等效代码:

    Ganancia<- custom_metric("Ganancia",function(y_true, y_pred) {
    
      
      weights = k_ones_like(y_true)
      loss = k_switch(k_equal(y_true,1), weights*29250, weights*(-750))
      values = tf$argsort(y_pred,axis = 0, direction='DESCENDING')
      ganancia = tf$gather(loss, values)
      ganancia=k_cumsum(ganancia, axis = 1)
      max=k_max(ganancia)
      
    
      
      return(max)
    })
    

    【讨论】:

      猜你喜欢
      • 2018-05-14
      • 2020-03-04
      • 2017-09-20
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2016-10-06
      相关资源
      最近更新 更多