@@ -78,8 +78,8 @@ def coordinate_gradient(b, M, reg, beta, i):
7878 '''
7979
8080 r = M [i , :] - beta
81- exp_beta = np .exp (- r / reg ) * b
82- khi = exp_beta / (np .sum (exp_beta ))
81+ exp_beta = np .exp (- r / reg ) * b
82+ khi = exp_beta / (np .sum (exp_beta ))
8383 return b - khi
8484
8585
@@ -164,7 +164,7 @@ def sag_entropic_transport(a, b, M, reg, numItermax=10000, lr=0.1):
164164 cur_coord_grad = a [i ] * coordinate_gradient (b , M , reg , cur_beta , i )
165165 sum_stored_gradient += (cur_coord_grad - stored_gradient [i ])
166166 stored_gradient [i ] = cur_coord_grad
167- cur_beta += lr * (1. / n_source ) * sum_stored_gradient
167+ cur_beta += lr * (1. / n_source ) * sum_stored_gradient
168168 return cur_beta
169169
170170
@@ -246,8 +246,8 @@ def averaged_sgd_entropic_transport(b, M, reg, numItermax=300000, lr=1):
246246 k = cur_iter + 1
247247 i = np .random .randint (n_source )
248248 cur_coord_grad = coordinate_gradient (b , M , reg , cur_beta , i )
249- cur_beta += (lr / np .sqrt (k )) * cur_coord_grad
250- ave_beta = (1. / k ) * cur_beta + (1 - 1. / k ) * ave_beta
249+ cur_beta += (lr / np .sqrt (k )) * cur_coord_grad
250+ ave_beta = (1. / k ) * cur_beta + (1 - 1. / k ) * ave_beta
251251 return ave_beta
252252
253253
@@ -316,12 +316,11 @@ def c_transform_entropic(b, M, reg, beta):
316316 '''
317317
318318 n_source = np .shape (M )[0 ]
319- n_target = np .shape (M )[1 ]
320319 alpha = np .zeros (n_source )
321320 for i in range (n_source ):
322321 r = M [i , :] - beta
323322 min_r = np .min (r )
324- exp_beta = np .exp (- (r - min_r )/ reg ) * b
323+ exp_beta = np .exp (- (r - min_r ) / reg ) * b
325324 alpha [i ] = min_r - reg * np .log (np .sum (exp_beta ))
326325 return alpha
327326
@@ -407,8 +406,6 @@ def solve_semi_dual_entropic(a, b, M, reg, method, numItermax=10000, lr=0.1,
407406 Advances in Neural Information Processing Systems (2016),
408407 arXiv preprint arxiv:1605.08527.
409408 '''
410- n_source = 7
411- n_target = 4
412409 if method .lower () == "sag" :
413410 opt_beta = sag_entropic_transport (a , b , M , reg , numItermax , lr )
414411 elif method .lower () == "asgd" :
@@ -418,7 +415,7 @@ def solve_semi_dual_entropic(a, b, M, reg, method, numItermax=10000, lr=0.1,
418415 return None
419416
420417 opt_alpha = c_transform_entropic (b , M , reg , opt_beta )
421- pi = (np .exp ((opt_alpha [:, None ] + opt_beta [None , :] - M [:, :])/ reg ) *
418+ pi = (np .exp ((opt_alpha [:, None ] + opt_beta [None , :] - M [:, :]) / reg ) *
422419 a [:, None ] * b [None , :])
423420
424421 if log :
@@ -511,8 +508,8 @@ def grad_dF_dalpha(M, reg, alpha, beta, batch_size, batch_alpha, batch_beta):
511508 grad_alpha = np .zeros (batch_size )
512509 grad_alpha [:] = batch_size
513510 for j in batch_beta :
514- grad_alpha -= np .exp ((alpha [batch_alpha ] + beta [j ]
515- - M [batch_alpha , j ])/ reg )
511+ grad_alpha -= np .exp ((alpha [batch_alpha ] + beta [j ] -
512+ M [batch_alpha , j ]) / reg )
516513 return grad_alpha
517514
518515
@@ -594,7 +591,7 @@ def grad_dF_dbeta(M, reg, alpha, beta, batch_size, batch_alpha, batch_beta):
594591 grad_beta [:] = batch_size
595592 for i in batch_alpha :
596593 grad_beta -= np .exp ((alpha [i ] +
597- beta [batch_beta ] - M [i , batch_beta ])/ reg )
594+ beta [batch_beta ] - M [i , batch_beta ]) / reg )
598595 return grad_beta
599596
600597
@@ -681,10 +678,10 @@ def sgd_entropic_regularization(M, reg, batch_size, numItermax, lr,
681678 batch_beta = np .random .choice (n_target , batch_size , replace = False )
682679 grad_F_alpha = grad_dF_dalpha (M , reg , cur_alpha , cur_beta ,
683680 batch_size , batch_alpha , batch_beta )
684- cur_alpha [batch_alpha ] += (lr / k ) * grad_F_alpha
681+ cur_alpha [batch_alpha ] += (lr / k ) * grad_F_alpha
685682 grad_F_beta = grad_dF_dbeta (M , reg , cur_alpha , cur_beta ,
686683 batch_size , batch_alpha , batch_beta )
687- cur_beta [batch_beta ] += (lr / k ) * grad_F_beta
684+ cur_beta [batch_beta ] += (lr / k ) * grad_F_beta
688685
689686 else :
690687 for cur_iter in range (numItermax ):
@@ -695,8 +692,8 @@ def sgd_entropic_regularization(M, reg, batch_size, numItermax, lr,
695692 batch_size , batch_alpha , batch_beta )
696693 grad_F_beta = grad_dF_dbeta (M , reg , cur_alpha , cur_beta ,
697694 batch_size , batch_alpha , batch_beta )
698- cur_alpha [batch_alpha ] += (lr / k ) * grad_F_alpha
699- cur_beta [batch_beta ] += (lr / k ) * grad_F_beta
695+ cur_alpha [batch_alpha ] += (lr / k ) * grad_F_alpha
696+ cur_beta [batch_beta ] += (lr / k ) * grad_F_beta
700697
701698 return cur_alpha , cur_beta
702699
@@ -779,7 +776,7 @@ def solve_dual_entropic(a, b, M, reg, batch_size, numItermax=10000, lr=1,
779776
780777 opt_alpha , opt_beta = sgd_entropic_regularization (M , reg , batch_size ,
781778 numItermax , lr )
782- pi = (np .exp ((opt_alpha [:, None ] + opt_beta [None , :] - M [:, :])/ reg ) *
779+ pi = (np .exp ((opt_alpha [:, None ] + opt_beta [None , :] - M [:, :]) / reg ) *
783780 a [:, None ] * b [None , :])
784781 if log :
785782 log = {}
0 commit comments