Exemplo n.º 1
0
    def TranslateData(self, batch, i):
        """Applies translations to data at index i in batch."""
        sizeX = self.sizeX
        sizex = self.sizex
        batchsize = batch[i].shape[1]
        shift = (sizeX - sizex) / 2
        offset_x = np.array([
            random.choice(self.translate_range_x) + shift
            for k in range(batchsize)
        ]).reshape(1, -1)
        offset_y = np.array([
            random.choice(self.translate_range_y) + shift
            for k in range(batchsize)
        ]).reshape(1, -1)
        num_channels = self.num_channels

        d = batch[i]

        if self.offset_x is None:
            self.offset_x = cm.CUDAMatrix(offset_x)
        else:
            self.offset_x.overwrite(offset_x)
        if self.offset_y is None:
            self.offset_y = cm.CUDAMatrix(offset_y)
        else:
            self.offset_y.overwrite(offset_y)
        if self.translated_d is None or self.translated_d.shape[1] != batchsize:
            self.translated_d = cm.empty((sizex**2 * num_channels, batchsize))
        d.generate_translations(sizeX,
                                sizex,
                                self.offset_x,
                                self.offset_y,
                                target=self.translated_d)
        batch[i] = self.translated_d
Exemplo n.º 2
0
 def log(self, inplace=False):
     if self.typ == 'numpy':
         return PMAT(np.log(self.mat))
     elif self.typ == 'cuda':
         if inplace:
             self.mat = cm.log(self.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             cm.log(self.mat, target=target)
             return PMAT(target)
Exemplo n.º 3
0
 def element_add(self, mat, inplace=False):
     if self.typ == 'numpy':
         return PMAT(self.mat + mat.mat)
     elif self.typ == 'cuda':
         if inplace:
             self.mat = self.mat.add(mat.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.add(mat.mat, target=target)
             return PMAT(target)
Exemplo n.º 4
0
 def add_col_vec(self, colvec, inplace=False):
     if self.typ == 'numpy':
         return PMAT(self.mat + colvec.mat)
     elif self.typ == 'cuda':
         if inplace:
             self.mat.add_col_vec(colvec.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.add_col_vec(colvec.mat, target=target)
             return PMAT(target)
Exemplo n.º 5
0
 def multiply_by_col(self, colvec, inplace=False):
     if self.typ == 'numpy':
         return PMAT(self.mat * colvec.mat)
     elif self.typ == 'cuda':
         if inplace:
             self.mat.mult_by_col(colvec.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.mult_by_col(colvec.mat, target=target)
             return PMAT(target)
Exemplo n.º 6
0
 def subtract(self, mat, inplace=False):
     if self.typ == 'numpy':
         return PMAT(self.mat - mat.mat)
     if self.typ == 'cuda':
         if inplace:
             self.mat.subtract(mat.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.subtract(mat.mat, target=target)
             return PMAT(target)
Exemplo n.º 7
0
 def exp(self, inplace=False):
     if self.typ == "numpy":
         return PMAT(np.exp(self.mat))
     elif self.typ == "cuda":
         if inplace:
             self.mat = cm.exp(self.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             cm.exp(self.mat, target=target)
             return PMAT(target)
Exemplo n.º 8
0
 def element_multiply(self, mat, inplace=False):
     if self.typ == "numpy":
         return PMAT(self.mat * mat.mat)
     elif self.typ == "cuda":
         if inplace:
             self.mat = self.mat.mult(mat.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.mult(mat.mat, target=target)
             return PMAT(target)
Exemplo n.º 9
0
 def add_row_vec(self, rowvec, inplace=False):
     if self.typ == "numpy":
         return PMAT(self.mat + rowvec.mat)
     elif self.typ == "cuda":
         if inplace:
             self.mat.add_row_vec(rowvec.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.add_row_vec(rowvec.mat, target=target)
             return PMAT(target)
Exemplo n.º 10
0
 def multiply_by_row(self, rowvec, inplace=False):
     if self.typ == "numpy":
         return PMAT(self.mat * rowvec.mat)
     elif self.typ == "cuda":
         if inplace:
             self.mat.mult_by_row(rowvec.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             self.mat.mult_by_row(rowvec.mat, target=target)
             return PMAT(target)
Exemplo n.º 11
0
 def divide_by_row(self, rowvec, inplace=False):
     if self.typ == 'numpy':
         return PMAT(self.mat / rowvec.mat)
     elif self.typ == 'cuda':
         if inplace:
             rowvec.mat.reciprocal()
             self.mat.mult_by_row(rowvec.mat)
             return self
         else:
             target = cm.empty(self.mat.shape)
             rowvec.mat.reciprocal()
             self.mat.mult_by_row(rowvec.mat, target=target)
             return PMAT(target)