如何在Keras中调试自定义丢失功能?

问题描述 投票:4回答:1

我用参数创建了自定义丢失函数。

def w_categorical_crossentropy(weights):
  def loss(y_true, y_pred):
  print(weights)
  print("----")
  print(weights.shape)
  final_mask = K.zeros_like(y_pred[:, 0])
  y_pred_max = K.max(y_pred, axis=1)
  y_pred_max = K.reshape(y_pred_max, (K.shape(y_pred)[0], 1))
  y_pred_max_mat = K.cast(K.equal(y_pred, y_pred_max), K.floatx())
  return K.categorical_crossentropy(y_pred, y_true)
return loss

现在,我需要控制权重参数值,但打印功能无法正常工作。有没有办法打印重量值?

debugging printing callback keras tensor
1个回答
0
投票

您可以使用tf.print来调试自定义丢失函数。 tf.print必须包含在图表中才能实际打印。根据文档,你用tf.control_dependencies做到这一点。

def w_categorical_crossentropy(weights):
  def loss(y_true, y_pred):
    print_op = tf.print("weights: ", weights, weights.shape)
    final_mask = K.zeros_like(y_pred[:, 0])
    y_pred_max = K.max(y_pred, axis=1)
    y_pred_max = K.reshape(y_pred_max, (K.shape(y_pred)[0], 1))
    y_pred_max_mat = K.cast(K.equal(y_pred, y_pred_max), K.floatx())
    with tf.control_dependencies([print_op]):
      return K.categorical_crossentropy(y_pred, y_true)
  return loss
© www.soinside.com 2019 - 2024. All rights reserved.