pyFM.optimize.weights.canonical_taus

pyFM.optimize.weights.canonical_taus(descr1_red, descr2_red, descr_op, orient_op, lap_mask, p_eff=None)

There are four normalizers.

descr tau = (m / k1) * ||F1||_F^2 / p_eff lap tau = (m / (k1*k2)) * sum_ij M_ij dcomm tau = (m / (k1*k2)) * (k2||M1||^2 + k1||M2||^2 - 2 tr tr) / p_eff orient tau = (m / (k1*k2)) * (k2||W1||^2 + k1||W2||^2) / p_eff

Using centered descriptors will help.

Parameters:
  • descr1_red ((k1, p) np.ndarray)

  • descr2_red ((k2, p) np.ndarray)

  • descr_op (tuple of np.ndarray or []) – (ops1, ops2) stacked as (p, k1, k1) and (p, k2, k2).

  • orient_op (tuple of np.ndarray or [])

  • lap_mask ((k2, k1) np.ndarray) – Raw LBO mask.

  • p_eff (float, optional) – Defaults to effective_p() of the two reduced descriptor banks.

Returns:

taus(tau_descr, tau_lap, tau_dcomm, tau_orient). A degenerate term gets 1.0.

Return type:

tuple of float