示例#1
0
 def __init__(self, V, rank, win, circular=False, alphaWf=0, alphaWt=0,
              betaWf=0, betaWt=0, **kwargs):
     SIPLCA2.__init__(self, V, rank, win, circular, **kwargs)
     
     self.VRWf = np.empty((self.F, self.rank))
     self.VRWt = np.empty((self.rank, self.winT))
     self.VRH = np.empty((self.T, self.rank, self.winF))
     self.alphaWf = 1 + alphaWf
     self.alphaWt = 1 + alphaWt
     self.betaWf = betaWf
     self.betaWt = betaWt
示例#2
0
    def plot(self, V, Wf, Wt, Z, H, curriter=-1):
        rank = len(Z)
        nrows = rank + 2
        WZH = self.reconstruct(Wf, Wt, Z, H, circular=self.circular)
        W = Basilica.w_product(Wf, Wt)
        plottools.plotall([V, WZH] + [SIPLCA2.reconstruct(W[:,z,:], Z[z], H[z,:],
                                                       circular=self.circular)
                                      for z in xrange(len(Z))], 
                          title=['V (Iteration %d)' % curriter,
                                 'Reconstruction'] +
                          ['Basis %d reconstruction' % x
                           for x in xrange(len(Z))],
                          colorbar=False, grid=False, cmap=plt.cm.hot,
                          subplot=(nrows, 2), order='c', align='xy')
        plottools.plotall([None] + [Z], subplot=(nrows, 2), clf=False,
                          plotfun=lambda x: plt.bar(np.arange(len(x)) - 0.4, x),
                          xticks=[[], range(rank)], grid=False,
                          colorbar=False, title='Z')

        plots = [None] * (3*nrows + 2)
        titles = plots + ['W%d' % x for x in range(rank)]
        wxticks = [[]] * (3*nrows + rank + 1) + [range(0, W.shape[2], 10)]
        plots.extend(W.transpose((1, 0, 2)))
        plottools.plotall(plots, subplot=(nrows, 6), clf=False, order='c',
                          align='xy', cmap=plt.cm.hot, colorbar=False, 
                          ylabel=r'$\parallel$', grid=False,
                          title=titles, yticks=[[]], xticks=wxticks)
        
        plots = [None] * (2*nrows + 2)
        titles=plots + ['H%d' % x for x in range(rank)]
        if np.squeeze(H).ndim < 4:
            plotH = np.squeeze(H)
        else:
            plotH = H.sum(2)
        if rank == 1:
            plotH = [plotH]
        plots.extend(plotH)
        plottools.plotall(plots, subplot=(nrows, 3), order='c', align='xy',
                          grid=False, clf=False, title=titles, yticks=[[]],
                          colorbar=False, cmap=plt.cm.hot, ylabel=r'$*$',
                          xticks=[[]]*(3*nrows-1) + [range(0, V.shape[1], 100)])
        plt.draw()
示例#3
0
 def initialize(self):
     W, Z, H = SIPLCA2.initialize(self)
     Wf = normalize(np.random.rand(self.F, self.rank), 0)
     Wt = normalize(np.random.rand(self.rank, self.winT), 1)
     return Wf, Wt, Z, H
示例#4
0
 def reconstruct(Wf, Wt, Z, H, norm=1.0, circular=False):
     W = Basilica.w_product(Wf, Wt)
     return SIPLCA2.reconstruct(W, Z, H, norm, circular)