summaryrefslogtreecommitdiff
path: root/ot/gpu/da.py
diff options
context:
space:
mode:
authorLeo gautheron <gautheron@iv-cm-359.creatis.insa-lyon.fr>2017-04-24 10:56:26 +0200
committerLeo gautheron <gautheron@iv-cm-359.creatis.insa-lyon.fr>2017-04-24 10:56:26 +0200
commit9df60d467ddd3316334578adac8a80667cfa8759 (patch)
treede0ea03345a1e4192cd404d52fecce5b38e53176 /ot/gpu/da.py
parente2cf8538b05f026d73c6033777699af77e7508b5 (diff)
Remove unnecessary parameter
Diffstat (limited to 'ot/gpu/da.py')
-rw-r--r--ot/gpu/da.py41
1 files changed, 10 insertions, 31 deletions
diff --git a/ot/gpu/da.py b/ot/gpu/da.py
index 700a5e4..399e769 100644
--- a/ot/gpu/da.py
+++ b/ot/gpu/da.py
@@ -69,11 +69,9 @@ def pairwiseEuclideanGPU(a, b, returnAsGPU=False, squared=False):
def sinkhorn_lpl1_mm(a, labels_a, b, M_GPU, reg, eta=0.1, numItermax=10,
numInnerItermax=200, stopInnerThr=1e-9,
- unlabelledValue=-99, verbose=False, log=False):
+ verbose=False, log=False):
p = 0.5
epsilon = 1e-3
-
- # init data
Nfin = len(b)
indices_labels = []
@@ -94,37 +92,18 @@ def sinkhorn_lpl1_mm(a, labels_a, b, M_GPU, reg, eta=0.1, numItermax=10,
# separated
W_GPU.assign(1)
W_GPU = W_GPU.transpose()
- all_majs_GPU = []
- idx_unlabelled = -1
for (i, c) in enumerate(classes):
- if c != unlabelledValue:
- (_, nbRow) = indices_labels[i].shape
- tmpC_GPU = cudamat.empty((Nfin, nbRow)).assign(0)
- transp_GPU.transpose().select_columns(indices_labels[i],
- tmpC_GPU)
- majs_GPU = tmpC_GPU.sum(axis=1).add(epsilon)
- cudamat.pow(majs_GPU, (p-1))
- majs_GPU.mult(p)
- all_majs_GPU.append(majs_GPU)
-
- tmpC_GPU.assign(0)
- tmpC_GPU.add_col_vec(majs_GPU)
- W_GPU.set_selected_columns(indices_labels[i], tmpC_GPU)
- else:
- idx_unlabelled = i
-
- # now we majorize the unlabelled (if there are any) by the min of
- # the majorizations. do it only for unlabbled data
- if idx_unlabelled != -1:
- all_majs = np.array([m_GPU.asarray() for m_GPU in all_majs_GPU])
- minMaj_GPU = (cudamat.CUDAMatrix(all_majs).min(axis=0)
- .transpose())
- (_, nbRow) = indices_labels[idx_unlabelled].shape
+ (_, nbRow) = indices_labels[i].shape
tmpC_GPU = cudamat.empty((Nfin, nbRow)).assign(0)
+ transp_GPU.transpose().select_columns(indices_labels[i], tmpC_GPU)
+ majs_GPU = tmpC_GPU.sum(axis=1).add(epsilon)
+ cudamat.pow(majs_GPU, (p-1))
+ majs_GPU.mult(p)
+
+ tmpC_GPU.assign(0)
+ tmpC_GPU.add_col_vec(majs_GPU)
+ W_GPU.set_selected_columns(indices_labels[i], tmpC_GPU)
- tmpC_GPU.add_col_vec(minMaj_GPU)
- W_GPU.set_selected_columns(indices_labels[idx_unlabelled],
- tmpC_GPU)
W_GPU = W_GPU.transpose()
return transp_GPU.asarray()