Ejemplo n.º 1
0
  def dpp_dropout(self, dropoutProb):
    if dropoutProb == 0:
      return

    W_n = self.W[0:-1, :]
    L = (W_n.dot(W_n.T))**2
    D, V = dpp.decompose_kernel(L)
    
    k = int(np.floor((1-dropoutProb)*self.W.shape[0]))
    J = dpp.sample_k(k, D, V)
    d_idx = np.ones((self.W.shape[0]-1, 1))
    d_idx[J.astype(int)] = 0
  
    self.prevZ[:, 0:-1] = self.prevZ[:, 0:-1]*d_idx.T
Ejemplo n.º 2
0
  def dpp_dropin_norm(self, dropoutProb):
    if dropoutProb == 0:
      return

    W_n = self.W[0:-1, :]/(np.atleast_2d(np.linalg.norm(self.W[0:-1, :], axis=1)).T)
    L = (W_n.dot(W_n.T))**2
    D, V = dpp.decompose_kernel(L)
    
    k = int(np.floor((1-dropoutProb)*self.W.shape[0]))
    J = dpp.sample_k(k, D, V)
    d_idx = np.zeros((self.W.shape[0]-1, 1))
    d_idx[J.astype(int)] = 1
  
    self.prevZ[:, 0:-1] = self.prevZ[:, 0:-1]*d_idx.T
Ejemplo n.º 3
0
k = 100

# Randomly sample k points
idx = np.arange(x.size)
np.random.shuffle(idx)
x_uniform = x[idx[:k]]
y_uniform = y[idx[:k]]

# Sample a k-DPP
# First construct a Gaussian L-ensemble
sigma = 0.1
L = np.exp(- ( np.power(x - x[:, None], 2) + 
               np.power(y - y[:, None], 2) )/(sigma**2))
(s, logdet) = np.linalg.slogdet(L)
D, V = dpp.decompose_kernel(L)
Y = dpp.sample_k(k, D, V)
print "Done Gaussian!"

L = np.power(np.outer(x, x)+np.outer(y, y), 2)
D, V = dpp.decompose_kernel(L)
Y2 = dpp.sample_k(k, D, V)

# Plot both
plt.figure(1)
plt.subplot(1, 3, 1)
plt.plot(x_uniform, y_uniform, 'ro')
plt.title('Uniform')

plt.subplot(1, 3, 2)
plt.title('DPP (Gaussian Similarity)')
plt.plot(x[Y.astype(int)], y[Y.astype(int)], 'bo')
Ejemplo n.º 4
0
  y.append(math.sin(a))

x = np.array(x)
y = np.array(y)

k = 50
idx = np.arange(x.size)
np.random.shuffle(idx)
x_uniform = x[idx[:k]]
y_uniform = y[idx[:k]]

sigma = 0.1
L = np.exp(- ( np.power(x - x[:, None], 2) + 
               np.power(y - y[:, None], 2) )/(sigma**2))
D, V = np.linalg.eig(L.T)
Y = dpp.sample_k(k, np.real(D), np.real(V))

L = np.power(np.outer(x, x)+np.outer(y, y), 2)
D, V = np.linalg.eig(L.T)
Y2 = dpp.sample_k(k, np.real(D), np.real(V))

plt.figure(1)
plt.subplot(1, 3, 1)
plt.plot(x_uniform, y_uniform, 'ro')
plt.xlim([-1.2, 1.2])
plt.ylim([-1.2, 1.2])
plt.title('Uniform')

plt.subplot(1, 3, 2)
plt.title('DPP (Gaussian Similarity)')
plt.plot(x[Y.astype(int)], y[Y.astype(int)], 'bo')
Ejemplo n.º 5
0
 def select_batch(self, batch_size):
     chosen = list(map(int, dpp.sample_k(batch_size, self.dppD, self.dppV)))
     return chosen
Ejemplo n.º 6
0
k = 100

# Randomly sample k points
idx = np.arange(x.size)
np.random.shuffle(idx)
x_uniform = x[idx[:k]]
y_uniform = y[idx[:k]]

# Sample a k-DPP
# First construct a Gaussian L-ensemble
sigma = 0.1
L = np.exp(-(np.power(x - x[:, None], 2) + np.power(y - y[:, None], 2)) /
           (sigma**2))
(s, logdet) = np.linalg.slogdet(L)
D, V = dpp.decompose_kernel(L)
Y = dpp.sample_k(k, D, V)
print "Done Gaussian!"

L = np.power(np.outer(x, x) + np.outer(y, y), 2)
D, V = dpp.decompose_kernel(L)
Y2 = dpp.sample_k(k, D, V)

# Plot both
plt.figure(1)
plt.subplot(1, 3, 1)
plt.plot(x_uniform, y_uniform, 'ro')
plt.title('Uniform')

plt.subplot(1, 3, 2)
plt.title('DPP (Gaussian Similarity)')
plt.plot(x[Y.astype(int)], y[Y.astype(int)], 'bo')