R中Keras的自定义度量

R中Keras的自定义度量,r,tensorflow,keras,R,Tensorflow,Keras,我想创建一个定制的度量,以便在R中训练一个完全连接的神经网络。问题是我不知道如何将语法传递给R tensorflow。 所需的功能如下所示: fganancia <- function(probs, data) { tbl <- as.data.table( list( "prob"=probs, "gan"= ifelse( data==1, 29250, -750 ) ) ) setorder( tbl, -prob ) tbl[ ,

我想创建一个定制的度量,以便在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  )
}

fganacia通过一天的研究解决了这个问题。这将是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)
})
加南西亚