Square domain periodic boundary conditions
Create a mapping from $t_0$ to $t_{10}$ without doing all the steps. We want to do the following.
In [4]:
%matplotlib inline
import pymks
import matplotlib.pyplot as plt
import numpy as np
from pymks.datasets import make_cahn_hilliard
In [5]:
n_steps = 10
size = (151, 151)
X, y = make_cahn_hilliard(n_samples=10, size=size, dt=1., n_steps=n_steps)
In [6]:
print(X.shape)
print(y.shape)
In [7]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(X[0])
plt.colorbar()
Out[7]:
In [8]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y[0])
plt.colorbar()
Out[8]:
In [9]:
from dask import compute, delayed
import dask.multiprocessing
def make_data(seed):
np.random.seed(seed)
return make_cahn_hilliard(n_samples=10, size=size, dt=1., n_steps=n_steps)
funcs = [delayed(make_data)(seed) for seed in range(30)]
out = compute(*funcs, get=dask.multiprocessing.get)
In [10]:
np.array(out).shape
Out[10]:
In [11]:
X = np.array(out)[:, 0].reshape((300,) + size)
y = np.array(out)[:, 1].reshape((300,) + size)
In [12]:
from pymks import MKSLocalizationModel
from pymks.bases import PrimitiveBasis
basis = PrimitiveBasis(n_states=5, domain=[-1, 1])
model = MKSLocalizationModel(basis=basis)
In [13]:
model.fit(X[:-1], y[:-1])
In [14]:
y_pred = model.predict(X[-1:])
In [15]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y_pred[0])
plt.colorbar()
Out[15]:
In [16]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y[-1])
plt.colorbar()
Out[16]:
In [17]:
from sklearn.model_selection import train_test_split
from sklearn import metrics
X_train, X_test, y_train, y_test = train_test_split(X, y)
In [18]:
basis = PrimitiveBasis(n_states=5, domain=[-1, 1])
model = MKSLocalizationModel(basis=basis)
In [19]:
model.fit(X_train, y_train)
In [20]:
y_pred = model.predict(X_test)
In [21]:
# NBVAL_IGNORE_OUTPUT
metrics.mean_squared_error(y_pred.flatten(), y_test.flatten())
Out[21]:
In [22]:
# NBVAL_IGNORE_OUTPUT
print(y_pred[0][0][:10])
print(y_test[0][0][:10])
In [23]:
y_pred.shape
Out[23]:
In [24]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y_pred[0])
plt.colorbar()
Out[24]:
In [25]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y_test[0])
plt.colorbar()
Out[25]:
In [26]:
X_big, y_big = make_cahn_hilliard(n_samples=1, size=(1000, 1000), dt=1., n_steps=n_steps)
In [27]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y_big[0])
plt.colorbar()
Out[27]:
In [28]:
basis = PrimitiveBasis(n_states=5, domain=[-1, 1])
model = MKSLocalizationModel(basis=basis)
model.fit(X, y)
model.resize_coeff(y_big[0].shape)
In [29]:
y_big_pred = model.predict(X_big)
In [30]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y_big_pred[0])
plt.colorbar()
Out[30]:
In [31]:
# NBVAL_IGNORE_OUTPUT
metrics.mean_squared_error(y_big_pred.flatten(), y_big.flatten())
Out[31]:
In [32]:
# NBVAL_IGNORE_OUTPUT
%timeit make_cahn_hilliard(n_samples=1, size=(1000, 1000), dt=1., n_steps=n_steps)
In [33]:
# NBVAL_IGNORE_OUTPUT
%timeit model.predict(X_big)
In [34]:
X2, y2 = make_cahn_hilliard(n_samples=1, size=size, dt=1., n_steps=2 * n_steps)
basis = PrimitiveBasis(n_states=10, domain=[-1, 1])
model = MKSLocalizationModel(basis=basis)
model.fit(X, y)
In [35]:
tmp = model.predict(X2)
y2_pred = model.predict(tmp)
In [36]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y2[0])
plt.colorbar()
Out[36]:
In [37]:
# NBVAL_IGNORE_OUTPUT
plt.imshow(y2_pred[0])
plt.colorbar()
Out[37]:
In [38]:
# NBVAL_IGNORE_OUTPUT
metrics.mean_squared_error(y2_pred.flatten(), y2.flatten())
Out[38]:
In [39]:
from pymks.bases import LegendreBasis
from sklearn.model_selection import GridSearchCV
from dask_searchcv import GridSearchCV
from sklearn import metrics
mse = metrics.mean_squared_error
prim_basis = PrimitiveBasis(2, [-1, 1])
leg_basis = LegendreBasis(2, [-1, 1])
params_to_tune = {'n_states': [2, 3, 5, 8, 13],
'basis': [prim_basis, leg_basis]}
model = MKSLocalizationModel(prim_basis)
score_func = metrics.make_scorer(lambda x, y: -mse(x.flatten(), y.flatten()))
gscv = GridSearchCV(model, params_to_tune, cv=5, scoring=score_func, scheduler="multiprocessing", n_jobs=8)
In [40]:
?GridSearchCV
In [41]:
# NBVAL_SKIP
gscv.fit(X_train, y_train)
Out[41]:
In [42]:
# NBVAL_SKIP
gscv.best_estimator_
Out[42]:
In [43]:
# NBVAL_SKIP
gscv.score(X_test, y_test)
Out[43]:
In [44]:
# NBVAL_SKIP
gscv.cv_results_
Out[44]: