Partage
  • Partager sur Facebook
  • Partager sur Twitter

CNN

CNN

    23 mai 2019 à 19:02:35

    Hello, I work on CNN , I use scipy library for the implementation .
    My problem in the concatenation step 
    for example ( for i range (0,3)), I obtain 3 pooling maps , each pooling map is of size (2*2).But when I use flatten equation during the concatenation step ,In fact I must get a vector of size (12*1),but just I obtain a vector of size (4*1) corresponding to the last pooling .

    Please who can help me:

    Code:

    import numpy as np,sys,array
    from scipy.ndimage.filters import maximum_filter
    import skimage.measure
    from scipy.signal import convolve2d
    
    
    x = np.array([[1, 2, 2,0],
        [1, 3, 1,1],
        [2, 0, 1,2],
        [0, 4, 2,1]])
    x_with_pad = np.pad(x, (1, 1), mode='constant', constant_values=0)
    
    class neuralNetwork(object):
    
         
        def __init__(self ):
         
            self.W1 = np.random.rand(2,4)-0.5
            self.W2 = np.random.rand(2,2)-0.5
            self.W3 = np.random.rand(1,2)-0.5
            self.lr = 0.3
           
        def forward(self, x_with_pad ):
            
            for i in range(0,3):
              self.F= np.random.rand(3,3)
              print("Filter is=",self.F )
              self.C = convolve2d(x_with_pad,self.F,mode='valid')   
              print("Convolution is=",self.C )
              self.Cp = self.ReLu(self.C)
              self.P= skimage.measure.block_reduce(self.Cp, (2,2), np.max)
              print("pooling is=",self.P )
            self.concatenation= self.P.flatten()
            print("concat is=",self.concatenation)
            self.H1 = np.dot(self.W1, self.concatenation)
            self.Y1 = self.sigmoid(self.H1)
            self.H2 = np.dot( self.W2,self.Y1)
            self.Y2 = self.sigmoid(self.H2)
            self.H3 = np.dot(self.W3,self.Y2)
            Y3 = self.sigmoid(self.H3)  
            return Y3
    
        def ReLu(self,x):
            mask = (x>0) * 1.0 
            return x * mask
        def d_ReLu(self,x):
            mask = (x>0) * 1.0 
            return  mask
    
        def sigmoid( self,s):
        # activation function
            return 1/(1+np.exp(-s))
      
        def sigmoidPrime(self,s):
        #derivative of sigmoid
            return s * (1 - s) 
        
    NN = neuralNetwork()
    for j in range(1): 
      NN.forward(x_with_pad )



    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2019 à 20:59:13

      deleted

      -
      Edité par bergiLeZÉR0 29 mai 2019 à 21:01:05

      • Partager sur Facebook
      • Partager sur Twitter

      "I believe in two things. Discipline and the Bible." The Shawshank Redemption

      CNN

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown