Ejemplo n.º 1
0
    def forward(self, X, train=False):
        gamma1, gamma2 = self.model['gamma1'], self.model['gamma2']
        beta1, beta2 = self.model['beta1'], self.model['beta2']

        u1, u2 = None, None
        bn1_cache, bn2_cache = None, None

        # First layer
        h1, h1_cache = l.fc_forward(X, self.model['W1'], self.model['b1'])
        bn1_cache = (self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'])
        h1, bn1_cache, run_mean, run_var = l.bn_forward(h1, gamma1, beta1, bn1_cache, train=train)
        h1, nl_cache1 = self.forward_nonlin(h1)

        self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'] = run_mean, run_var

        if train:
            h1, u1 = l.dropout_forward(h1, self.p_dropout)

        # Second layer
        h2, h2_cache = l.fc_forward(h1, self.model['W2'], self.model['b2'])
        bn2_cache = (self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'])
        h2, bn2_cache, run_mean, run_var = l.bn_forward(h2, gamma2, beta2, bn2_cache, train=train)
        h2, nl_cache2 = self.forward_nonlin(h2)

        self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'] = run_mean, run_var

        if train:
            h2, u2 = l.dropout_forward(h2, self.p_dropout)

        # Third layer
        score, score_cache = l.fc_forward(h2, self.model['W3'], self.model['b3'])

        cache = (X, h1_cache, h2_cache, score_cache, nl_cache1, nl_cache2, u1, u2, bn1_cache, bn2_cache)

        return score, cache
Ejemplo n.º 2
0
    def forward(self, X, train=False):
        gamma1, gamma2 = self.model['gamma1'], self.model['gamma2']
        beta1, beta2 = self.model['beta1'], self.model['beta2']

        u1, u2 = None, None
        bn1_cache, bn2_cache = None, None

        # First layer
        h1, h1_cache = l.fc_forward(X, self.model['W1'], self.model['b1'])
        bn1_cache = (self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'])
        h1, bn1_cache, run_mean, run_var = l.bn_forward(h1, gamma1, beta1, bn1_cache, train=train)
        h1, nl_cache1 = self.forward_nonlin(h1)

        self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'] = run_mean, run_var

        if train:
            h1, u1 = l.dropout_forward(h1, self.p_dropout)

        # Second layer
        h2, h2_cache = l.fc_forward(h1, self.model['W2'], self.model['b2'])
        bn2_cache = (self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'])
        h2, bn2_cache, run_mean, run_var = l.bn_forward(h2, gamma2, beta2, bn2_cache, train=train)
        h2, nl_cache2 = self.forward_nonlin(h2)

        self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'] = run_mean, run_var

        if train:
            h2, u2 = l.dropout_forward(h2, self.p_dropout)

        # Third layer
        score, score_cache = l.fc_forward(h2, self.model['W3'], self.model['b3'])

        cache = (X, h1_cache, h2_cache, score_cache, nl_cache1, nl_cache2, u1, u2, bn1_cache, bn2_cache)

        return score, cache
Ejemplo n.º 3
0
    def forward(self, X, iter, train=False):
        if self.multilevel:
            if iter != 0 and iter % self.multi_step == 0 and iter < self.multi_step * self.multi_times + 1:
                self.doubleLayers()
        cache = dict(X=X)
        h = X
        prev = 0
        #h, cache['c_cache'] = l.conv_forward(h, self.model['Wc'], self.model['bc'])
        h, cache['h_caches'], cache['nl_caches'] = \
            l.fcrelu_forward(h, self.model['Ws'], self.model['bs'], hypo=self.hypo)
        if train and self.doDropout:
            h, cache['u1'] = l.dropout_forward(h, self.p_dropout)

        for i in range(1, self.num_layers + 1):
            temp = h
            #print(np.max(h))
            if self.leapfrog:
                h, cache['h_cache'+str(i)], cache['nl_cache'+str(i)] = \
                    l.leap_forward(h, prev, self.model['W'+str(i)], self.model['b'+str(i)], self.hypo, i == 1)
            else:
                h, cache['h_cache'+str(i)], cache['nl_cache'+str(i)] = \
                    l.fcrelu_forward(h, self.model['W'+str(i)], self.model['b'+str(i)], hypo=self.hypo)
            prev = temp

        cache['finalh'] = h
        score, cache['score_cache'] = l.fc_forward(h, self.model['Wf'],
                                                   self.model['bf'])

        return score, cache
Ejemplo n.º 4
0
    def forward(self, X, train=False):
        u3 = None
        
        # Conv-1
        h1, h1_cache = l.conv_forward(X, self.model['W1'], self.model['b1'])
        h1, nl_cache1 = l.relu_forward(h1)

        # Pool-1
        hpool, hpool_cache = l.maxpool_forward(h1)
        h2 = hpool.ravel().reshape(X.shape[0], -1)

        # FC-7
        h3, h3_cache = l.fc_forward(h2, self.model['W2'], self.model['b2'])
        h3, nl_cache3 = l.relu_forward(h3)
        
        #add dropout in fully connected layer
        if train:
                h3, u3 = l.dropout_forward(h3, self.p_dropout[0])

        # Softmax
        score, score_cache = l.fc_forward(h3, self.model['W3'], self.model['b3'])

        return score, (X, h1_cache, h3_cache, score_cache, hpool_cache, hpool, nl_cache1, nl_cache3, u3)
Ejemplo n.º 5
0
    def forward(self, X, train=False):
        if self.nlayer == 2:
            gamma1 = self.model['gamma1']
            beta1 = self.model['beta1']
            
            u1, bn1_cache = None, None
            
            # First layer
            h1, h1_cache = l.fc_forward(X, self.model['W1'], self.model['b1'])
            bn1_cache = (self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'])
            h1, bn1_cache, run_mean, run_var = l.bn_forward(h1, gamma1, beta1, bn1_cache, train=train)
            h1, nl_cache1 = self.forward_nonlin(h1)
            
            if train:
                h1, u1 = l.dropout_forward(h1, self.p_dropout[0])
            
            # Last layer
            score, score_cache = l.fc_forward(h1, self.model['W4'], self.model['b4'])

            cache = (X, h1_cache, score_cache, nl_cache1, u1, bn1_cache)
            
        if self.nlayer == 3:
            gamma1, gamma2 = self.model['gamma1'], self.model['gamma2']
            beta1, beta2 = self.model['beta1'], self.model['beta2']

            u1, u2 = None, None
            bn1_cache, bn2_cache = None, None

            # First layer
            h1, h1_cache = l.fc_forward(X, self.model['W1'], self.model['b1'])
            bn1_cache = (self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'])
            h1, bn1_cache, run_mean, run_var = l.bn_forward(h1, gamma1, beta1, bn1_cache, train=train)
            h1, nl_cache1 = self.forward_nonlin(h1)

            self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'] = run_mean, run_var
            
            if train:
                h1, u1 = l.dropout_forward(h1, self.p_dropout[0])

            # Second layer
            h2, h2_cache = l.fc_forward(h1, self.model['W2'], self.model['b2'])
            bn2_cache = (self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'])
            h2, bn2_cache, run_mean, run_var = l.bn_forward(h2, gamma2, beta2, bn2_cache, train=train)
            h2, nl_cache2 = self.forward_nonlin(h2)

            self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'] = run_mean, run_var

            if train:
                h2, u2 = l.dropout_forward(h2, self.p_dropout[1])

            # Third layer
            score, score_cache = l.fc_forward(h2, self.model['W4'], self.model['b4'])

            cache = (X, h1_cache, h2_cache, score_cache, nl_cache1, nl_cache2, u1, u2, bn1_cache, bn2_cache)
            
        if self.nlayer == 4:
            gamma1, gamma2, gamma3 = self.model['gamma1'], self.model['gamma2'], self.model['gamma3']
            beta1, beta2, beta3 = self.model['beta1'], self.model['beta2'], self.model['beta3']

            u1, u2, u3 = None, None, None
            bn1_cache, bn2_cache, bn3_cache = None, None, None

            # First layer
            h1, h1_cache = l.fc_forward(X, self.model['W1'], self.model['b1'])
            bn1_cache = (self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'])
            h1, bn1_cache, run_mean, run_var = l.bn_forward(h1, gamma1, beta1, bn1_cache, train=train)
            h1, nl_cache1 = self.forward_nonlin(h1)

            self.bn_caches['bn1_mean'], self.bn_caches['bn1_var'] = run_mean, run_var
            
            if train:
                h1, u1 = l.dropout_forward(h1, self.p_dropout[0])

            # Second layer
            h2, h2_cache = l.fc_forward(h1, self.model['W2'], self.model['b2'])
            bn2_cache = (self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'])
            h2, bn2_cache, run_mean, run_var = l.bn_forward(h2, gamma2, beta2, bn2_cache, train=train)
            h2, nl_cache2 = self.forward_nonlin(h2)

            self.bn_caches['bn2_mean'], self.bn_caches['bn2_var'] = run_mean, run_var

            if train:
                h2, u2 = l.dropout_forward(h2, self.p_dropout[1])
            
            # Third layer
            h3, h3_cache = l.fc_forward(h1, self.model['W3'], self.model['b3'])
            bn3_cache = (self.bn_caches['bn3_mean'], self.bn_caches['bn3_var'])
            h3, bn3_cache, run_mean, run_var = l.bn_forward(h3, gamma3, beta3, bn3_cache, train=train)
            h3, nl_cache3 = self.forward_nonlin(h3)

            self.bn_caches['bn3_mean'], self.bn_caches['bn3_var'] = run_mean, run_var

            if train:
                h3, u3 = l.dropout_forward(h3, self.p_dropout[2])

            # Third layer
            score, score_cache = l.fc_forward(h3, self.model['W4'], self.model['b4'])

            cache = (X, h1_cache, h2_cache, h3_cache, score_cache, nl_cache1, nl_cache2, nl_cache3, u1, u2, u3, bn1_cache, bn2_cache, bn3_cache)

        return score, cache