Skip to content

Question about using UCOOT #3

Description

@ttsesm

Hi @6Ulm,

Congrats for your work. I am trying to understand whether your work could be useful for my task.

I am using the following objective function to compute the optimal transport for my input data:

def objective_function(params, Cs_3d, ms_3d, Ct_2d, mt_2d):
    """Objective function to minimize."""
    P = params[:6].reshape(2, 3)
    t = params[6:]
    C = cost_matrix2(Cs_3d, ms_3d, Ct_2d, mt_2d, P, t)

    # Compute optimal transport
    a = ot.unif(len(Cs_3d), type_as=C)
    b = ot.unif(len(Ct_2d), type_as=C)
    pi = ot.sinkhorn(a, b, C, reg=0.1)

    return torch.sum(pi * C)

This works relatively well as you can see below from the printed transport plans:
300x300
claude_ott_250_vs_500

which it seems to catch the undergone correlation between my samples. My only issue is that practically due to the noise/outliers that are also apparent in the graphs my accuracy on trying to find the correspondences is not that high since I am getting matches outside the diagonal line which should be the correct one. Thus, I was thinking whether I could use your UCOOT implementation to smoothen a bit more my transport plan and eliminate as much as possible my outliers. Do you think that this would be a valid approach? Also I saw you have also opened a pull request in POT for integrating the algorithm in the library which would be nice to use it directly from there I guess.

Thanks, and I would be interested to hear your opinion.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions