shithub: opus

Download patch

ref: 8c271d60c49c4c430bb1b41323017acef908a3a0
parent: b9e0ea23e00cd7a8ea49f046b9f0ee9404f747bd
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Mon Dec 10 11:15:50 EST 2018

Controlling per-gate sparsity

--- a/dnn/lpcnet.py
+++ b/dnn/lpcnet.py
@@ -64,12 +64,12 @@
             N = p.shape[0]
             #print("nb = ", nb, ", N = ", N);
             #print(p.shape)
-            density = self.final_density
-            if self.batch < self.t_end:
-                r = 1 - (self.batch-self.t_start)/(self.t_end - self.t_start)
-                density = 1 - (1-self.final_density)*(1 - r*r*r)
             #print ("density = ", density)
             for k in range(nb):
+                density = self.final_density[k]
+                if self.batch < self.t_end:
+                    r = 1 - (self.batch-self.t_start)/(self.t_end - self.t_start)
+                    density = 1 - (1-self.final_density[k])*(1 - r*r*r)
                 A = p[:, k*N:(k+1)*N]
                 A = A - np.diag(np.diag(A))
                 A = np.transpose(A, (1, 0))
--- a/dnn/train_lpcnet.py
+++ b/dnn/train_lpcnet.py
@@ -147,4 +147,4 @@
 
 #model.load_weights('lpcnet9b_384_10_G16_01.h5')
 model.compile(optimizer=Adam(0.001, amsgrad=True, decay=5e-5), loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])
-model.fit([in_data, in_exc, features, periods], out_data, batch_size=batch_size, epochs=nb_epochs, validation_split=0.0, callbacks=[checkpoint, lpcnet.Sparsify(2000, 40000, 400, 0.1)])
+model.fit([in_data, in_exc, features, periods], out_data, batch_size=batch_size, epochs=nb_epochs, validation_split=0.0, callbacks=[checkpoint, lpcnet.Sparsify(2000, 40000, 400, (0.1, 0.1, 0.1))])
--