如何使用具有 numpy 数组和矩阵的多个函数创建自定义 Keras 指标?

数据挖掘 喀拉斯 张量流 回归 公制
2022-02-19 04:23:06

我正在训练一个使用回归预测位置和方向的模型。我想使用模型输出的最后 3 个值来实现自定义度量,以计算和最小化由函数定义的角度误差,如下所示:

def angular_error(data_true, data_pred):

  # Axes orientation in radians (X,Y,Z)
  axes_orientation_gt = np.transpose(data_true[2:5])
  axes_orientation_pred = np.transpose(data_pred[2:5])

  axes_size = 0.1  # Axes_size in meters

  # Convert euler angles to rotation matrix (XYZ)
  _, Rx_gt, Ry_gt, Rz_gt = eul2rotmat(axes_orientation_gt)

  # Rotation matrix XYZ
  R_gt = Rz_gt * Ry_gt * Rx_gt

  # Y-axis end
  y_a_gt = R_gt * np.transpose(np.matrix([0, 1, 0])) * axes_size

  # Predictions
  # Convert euler angles to rotation matrix (XYZ)
  _, Rx_dnn, Ry_dnn, Rz_dnn = eul2rotmat(axes_orientation_pred)

  # Rotation matrix XYZ
  R_dnn = Rz_dnn * Ry_dnn * Rx_dnn

  ....

  return gaze_ang_err

有没有办法避免使用 Keras/TF 函数而不是每个 numpy 函数的外观/用法?这个函数还调用了另外两个带有 numpy 和数学运算的函数,所以看起来有点过头了。任何输入表示赞赏...

1个回答

使用tf.py_function()作为函数周围的包装函数解决它angular_error()并将其添加到回调中。