summaryrefslogtreecommitdiff
path: root/examples/plot_optim_OTreg.py
diff options
context:
space:
mode:
authorAlexandre Gramfort <alexandre.gramfort@m4x.org>2016-12-02 12:49:38 +0100
committerAlexandre Gramfort <alexandre.gramfort@m4x.org>2016-12-02 12:57:25 +0100
commitf439f777084690ecbf54bcd8d67dadc883fffa31 (patch)
tree56c8a160fb6edcdaca8ca6ce6de1949b9bc33b77 /examples/plot_optim_OTreg.py
parent8dbfd3edae649f5f3e87be4a3ce446c59729b2f7 (diff)
first attempt to support sphinx-gallery
Diffstat (limited to 'examples/plot_optim_OTreg.py')
-rw-r--r--examples/plot_optim_OTreg.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/examples/plot_optim_OTreg.py b/examples/plot_optim_OTreg.py
new file mode 100644
index 0000000..0de6b08
--- /dev/null
+++ b/examples/plot_optim_OTreg.py
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+"""
+Regularized OT with generic solver
+"""
+
+import numpy as np
+import matplotlib.pylab as pl
+import ot
+
+
+
+#%% parameters
+
+n=100 # nb bins
+
+# bin positions
+x=np.arange(n,dtype=np.float64)
+
+# Gaussian distributions
+a=ot.datasets.get_1D_gauss(n,m=20,s=5) # m= mean, s= std
+b=ot.datasets.get_1D_gauss(n,m=60,s=10)
+
+# loss matrix
+M=ot.dist(x.reshape((n,1)),x.reshape((n,1)))
+M/=M.max()
+
+#%% EMD
+
+G0=ot.emd(a,b,M)
+
+pl.figure(3)
+ot.plot.plot1D_mat(a,b,G0,'OT matrix G0')
+
+#%% Example with Frobenius norm regularization
+
+def f(G): return 0.5*np.sum(G**2)
+def df(G): return G
+
+reg=1e-1
+
+Gl2=ot.optim.cg(a,b,M,reg,f,df,verbose=True)
+
+pl.figure(3)
+ot.plot.plot1D_mat(a,b,Gl2,'OT matrix Frob. reg')
+
+#%% Example with entropic regularization
+
+def f(G): return np.sum(G*np.log(G))
+def df(G): return np.log(G)+1
+
+reg=1e-3
+
+Ge=ot.optim.cg(a,b,M,reg,f,df,verbose=True)
+
+pl.figure(4)
+ot.plot.plot1D_mat(a,b,Ge,'OT matrix Entrop. reg')
+
+#%% Example with Frobenius norm + entropic regularization with gcg
+
+def f(G): return 0.5*np.sum(G**2)
+def df(G): return G
+
+reg1=1e-1
+reg2=1e-1
+
+Gel2=ot.optim.gcg(a,b,M,reg1,reg2,f,df,verbose=True)
+
+pl.figure(5)
+ot.plot.plot1D_mat(a,b,Gel2,'OT entropic + matrix Frob. reg') \ No newline at end of file