-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
38 lines (28 loc) · 1001 Bytes
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy as np
from sklearn.cluster import KMeans
def quantize(signal, partitions, codebook):
indices = []
quanta = []
for datum in signal:
index = 0
while index < len(partitions) and datum > partitions[index]:
index += 1
indices.append(index)
quanta.append(codebook[index])
return indices, quanta
def partition_codebook(vec, bits, uniform = True):
if uniform:
minVec = np.min(vec)
maxVec = np.max(vec)
stepSize = (maxVec - minVec) / 2**bits
codebook = np.arange(minVec,maxVec, stepSize)
partition = codebook[1:]
else:
Kmeans = KMeans(n_clusters = 2**bits)
Kmeans.fit(np.reshape(vec,(-1,1)))
codebook = np.reshape(np.sort(Kmeans.cluster_centers_, axis=0),(2**bits,))
partition = codebook[1:]
return partition, codebook
def mse_bw_models(model1, model2):
for w1, w2 in zip(model1.weights, model2.weights):
print(np.mean((w1-w2)**2))