Keras在自定义损失函数中访问单个值

时间:2018-08-08 13:35:19

标签: python tensorflow keras loss

我想实现以下损失功能:

  • 接收一批尺寸(batch_size,number_out_nodes)
  • 对每行/每个样本应用scipy函数,将其映射为实数
  • 合并批次中所有样品的结果

我已经使用numpy数组作为输入编写了该函数。

它看起来像这样:

 def loss_func(y_true, y_pred):
      y_pred = np.array(y_pred)
      list_of_factors = [4]*len(y_pred)
      val = 0
      for idx, factor in list_of_factors:
          val += factor*scipy_func(y_pred[idx])
      return val

有什么方法可以将该函数实现为Keras损失函数吗?我不知道如何访问该批次的各个样本。

谢谢

1 个答案:

答案 0 :(得分:0)

不能应用任何 scipy函数,因为在损失函数中获得的变量是张量,而不是nD NumPy数组。因此,在损失函数中没有以张量为参数的NumPy或SciPy。

取决于您的 scipy函数是什么,您可以使用Keras backend中可用的操作来实现它。大多数功能类似于NumPy运算,但作用于张量。

看看existing loss functions以及它们如何使用这些后端函数在张量上进行操作。