In [29]:
import numpy as np
seed=13
rnd = np.random.RandomState(seed)
In [30]:
def conditioning(w):
eig_values = np.abs(np.linalg.eigvals(w))
cond = max(eig_values) / min(eig_values)
return cond
In [31]:
n = 5
std_dev = 0.05
w = rnd.normal(loc=0, scale=std_dev, size=(n, n))
In [32]:
w
Out[32]:
In [33]:
u, s, v = np.linalg.svd(w)
In [34]:
w1 = np.dot(np.dot(u, np.diag(s)), v)
np.allclose(w, w1)
Out[34]:
In [35]:
new_diag = rnd.normal(loc=1., scale=0.01, size=(n,))
In [36]:
new_diag
Out[36]:
In [37]:
w2 = np.dot(np.dot(u, np.diag(new_diag)), v)
In [39]:
npz = np.load("/home/galvan/development/RNNs/models/temporal_order_plain, min_length: 150_2_14/best_model.npz")
W_rec = npz["W_rec"]
In [43]:
w_ = w2.copy()
print(conditioning(w_))
for _ in range(20):
print(conditioning(w_))
w_ = np.dot(w_, w_)
In [ ]:
In [ ]: