Esempio n. 1
0
 def __init__(self,input_size,output_size,layer_sizes=[500],learning_rate=0.01, 
         L1_reg=0.00, L2_reg=0.0001, 
         n_epochs=1000,batch_size=20):
     self.learning_rate = learning_rate
     self.L1_reg = L1_reg
     self.L2_reg = L2_reg
     self.n_epochs = n_epochs
     self.batch_size=batch_size
     self.x = T.matrix('x')      
     self.mlp =  MultiMLP(input = self.x, n_in = input_size, \
                  layer_sizes = layer_sizes, n_out = output_size)
Esempio n. 2
0
class MultiMLPClassifier(object) :
    
    def __init__(self,input_size,output_size,layer_sizes=[500],learning_rate=0.01, 
            L1_reg=0.00, L2_reg=0.0001, 
            n_epochs=1000,batch_size=20):
        self.learning_rate = learning_rate
        self.L1_reg = L1_reg
        self.L2_reg = L2_reg
        self.n_epochs = n_epochs
        self.batch_size=batch_size
        self.x = T.matrix('x')      
        self.mlp =  MultiMLP(input = self.x, n_in = input_size, \
                     layer_sizes = layer_sizes, n_out = output_size)
        
    def fit(self,X,y):
         X_train, X_valid, y_train, y_valid = self.splitData(X,y)
         train_model(self.mlp,self.x, X_train,X_valid,y_train,
                     y_valid, self.L1_reg, 
                     self.L2_reg, self.learning_rate, 
                     self.n_epochs, self.batch_size)
#        
    def predict(self,X, y = None):        
        fit_model = theano.function(
            inputs=[],
            outputs=self.mlp.predict_class,
            givens={self.x : X}
            )
        if(y != None):
            validate_model = theano.function(inputs=[],
            outputs=self.mlp.errors(y),
            givens={
                self.x: X,
                y: y})
            print((' validation error %f %%') % (validate_model() * 100.))
        return fit_model()
        
    def predict_proba(self,X, y = None):        
        fit_model = theano.function(
            inputs=[],
            outputs=self.mlp.predict_proba,
            givens={self.x : X}
            )
        if(y != None):
            validate_model = theano.function(inputs=[],
            outputs=self.mlp.errors(y),
            givens={
                self.x: X,
                y: y})
            print((' validation error %f %%') % (validate_model() * 100.))
        return fit_model()
        
    def getSharedInstance(self,array):
            return theano.shared(np.asarray(array, dtype=theano.config.floatX))
        
    def splitData(self,X,y):    
        r = np.random.rand(X.shape[0])    
        
        X_train = self.getSharedInstance(X[r<0.9])
        X_valid = self.getSharedInstance(X[r>=0.9])
        
        y_train = T.as_tensor_variable(y[r<0.9])
        y_valid = T.as_tensor_variable(y[r>=0.9])
        
        # First 90% train, Lirst 10% validation
        return  X_train, \
                X_valid, \
                T.cast(y_train,'int32'), \
                T.cast(y_valid,'int32')