rajeswar

Untitled

Jul 24th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 19.16 KB | None | 0 0
  1. File: cnv2.py
  2. Function: change_input at line 66
  3. Total time: 123.166 s
  4.  
  5. Line #      Hits         Time  Per Hit   % Time  Line Contents
  6. ==============================================================
  7.     66                                               @profile
  8.     67                                               def change_input(self,input1):
  9.     68      1197         2643      2.2      0.0          self.input=input1
  10.     69      7182        14651      2.0      0.0          for i in xrange(self.conv_out_shape[1]):
  11.     70      5985     96054171  16049.2     78.0              self.conv_out[0][i]=sg.fftconvolve(self.input[0][i%self.image_shape[1]],numpy.rot90(self.W[0][i/self.image_shape[1]],2),mode='valid')
  12.     71     22743        21437      0.9      0.0          for k in xrange(self.pooled_shape[3]):
  13.     72    538650       565004      1.0      0.5              for l in xrange(self.pooled_shape[4]):
  14.     73    517104      9406727     18.2      7.6                  output1 = numpy.sum(self.conv_out[0, :, :, k*3: (k*3) +1, l*3:(l+1)*3])
  15.     74    517104      9714187     18.8      7.9                  output1 += numpy.sum(self.conv_out[0, :, :, k*3 + 2, l*3:(l+1)*3])/9.0
  16.     75    517104      3098968      6.0      2.5                  output1 += self.b
  17.     76    517104      4286071      8.3      3.5                  self.pooled[0, :, :, k, l] = numpy.tanh(output1)
  18.     77                                                  #for i in xrange(self.pooled_shape[1]):
  19.     78                                                    #   for j in xrange(self.pooled_shape[2]):
  20.     79                                                     #      for k in xrange(self.pooled_shape[3]):
  21.     80                                                      #         for l in xrange(self.pooled_shape[4]):
  22.     81                                                       #            self.pooled[0][i][j][k][l]=math.tanh((numpy.sum(self.conv_out[0][i][j][k*3][l*3:(l+1)*3])+numpy.sum(self.conv_out[0][i][j][k*3+1][l*3:(l+1)*3])+numpy.sum(self.conv_out[0][i][j][k*3+2][l*3:(l+1)*3]))/9.0+self.b[i][j])
  23.     82                                                          
  24.     83      1197         1860      1.6      0.0          self.output=self.pooled
  25.  
  26. File: cnv2.py
  27. Function: gradient at line 87
  28. Total time: 191.169 s
  29.  
  30. Line #      Hits         Time  Per Hit   % Time  Line Contents
  31. ==============================================================
  32.     87                                               @profile
  33.     88                                               def gradient(self,eta):
  34.     89      5448         5613      1.0      0.0          for i in xrange(len(self.b)):
  35.     90     31780        38078      1.2      0.0              for j in xrange(len(self.b[i])):
  36.     91     27240       555889     20.4      0.3                  self.b[i][j]-=eta*numpy.asarray(self.delta[0][i][j]).sum()
  37.     92       908        62769     69.1      0.0          delta1=numpy.asarray(numpy.zeros(self.conv_out_shape))
  38.     93      5448         5753      1.1      0.0          for i in xrange(self.conv_out_shape[1]):
  39.     94     31780        44246      1.4      0.0              for j in xrange(self.conv_out_shape[2]):
  40.     95     27240      3962963    145.5      2.1                  delta1[0][i][j]=numpy.kron(self.delta[0][i][j],[[1,1,1],[1,1,1],[1,1,1]])/9.0
  41.     96                                                  
  42.     97      5448        13904      2.6      0.0          for i in xrange(self.filter_shape[1]):
  43.     98      4540       114587     25.2      0.1              t=numpy.rot90(delta1[0][i],2)
  44.     99      4540    186365030  41049.6     97.5              self.W[0][i]-=sg.fftconvolve(self.input[0][0],t,mode='valid')*eta
  45.  
  46. File: cnv2.py
  47. Function: change_input at line 131
  48. Total time: 80.3559 s
  49.  
  50. Line #      Hits         Time  Per Hit   % Time  Line Contents
  51. ==============================================================
  52.    131                                               @profile
  53.    132                                               def change_input(self,input1):
  54.    133      1197         1493      1.2      0.0          self.input=input1
  55.    134     19152        28890      1.5      0.0          for i in xrange(self.conv_out_shape[1]):
  56.    135     17955     24837583   1383.3     30.9              self.conv_out[0][i]=sg.fftconvolve(self.input[0][i%self.image_shape[1]],numpy.rot90(self.W[0][i/self.image_shape[1]],2),mode='valid')
  57.    136     19152        17728      0.9      0.0          for i in xrange(self.pooled_shape[1]):
  58.    137     71820        75800      1.1      0.1              for j in xrange(self.pooled_shape[2]):
  59.    138    269325       266134      1.0      0.3                  for k in xrange(self.pooled_shape[3]):
  60.    139   1508220      1803097      1.2      2.2                      for l in xrange(self.pooled_shape[4]):
  61.    140   1292760     53323569     41.2     66.4                          self.pooled[0][i][j][k][l]=math.tanh((numpy.sum(self.conv_out[0][i][j][k*3][l*3:(l+1)*3])+numpy.sum(self.conv_out[0][i][j][k*3+1][l*3:(l+1)*3])+numpy.sum(self.conv_out[0][i][j][k*3+2][l*3:(l+1)*3]))/9.0+self.b[i][j])
  62.    141                                                          
  63.    142      1197         1602      1.3      0.0          self.output=self.pooled
  64.  
  65. File: cnv2.py
  66. Function: gradient at line 147
  67. Total time: 118.821 s
  68.  
  69. Line #      Hits         Time  Per Hit   % Time  Line Contents
  70. ==============================================================
  71.    147                                               @profile
  72.    148                                               def gradient(self,inp,eta):
  73.    149                                                  
  74.    150     14528        15733      1.1      0.0          for i in xrange(len(self.b)):
  75.    151     54480        86474      1.6      0.1              for j in xrange(len(self.b[i])):
  76.    152     40860       812427     19.9      0.7                  self.b[i][j]-=eta*numpy.asarray(self.delta[0][i][j]).sum()
  77.    153       908        14951     16.5      0.0          delta1=numpy.asarray(numpy.zeros(self.conv_out_shape))
  78.    154     14528        15367      1.1      0.0          for i in xrange(self.conv_out_shape[1]):
  79.    155     54480        85907      1.6      0.1              for j in xrange(self.conv_out_shape[2]):
  80.    156     40860      3567394     87.3      3.0                  delta1[0][i][j]=numpy.kron(self.delta[0][i][j],[[1,1,1],[1,1,1],[1,1,1]])/9.0
  81.    157       908         1921      2.1      0.0          self.delta1=delta1
  82.    158                                                  
  83.    159                                                  
  84.    160       908         8391      9.2      0.0          inp.delta=numpy.zeros(self.image_shape)
  85.    161     14528        25907      1.8      0.0          for i in xrange(self.conv_out_shape[1]):
  86.    162     13620     12158527    892.7     10.2              inp.delta[0][i%self.image_shape[1]]+= sg.fftconvolve(self.delta1[0][i],numpy.rot90(self.W[0][i/self.image_shape[1]],2),'full')
  87.    163       908        46464     51.2      0.0          inp.delta/=(self.filter_shape[1]*1.0)
  88.    164      5448         7056      1.3      0.0          for i in xrange(self.image_shape[1]):
  89.    165     31780        34316      1.1      0.0              for j in xrange(self.image_shape[2]):
  90.    166    517560       522186      1.0      0.4                  for k in xrange(self.image_shape[3]):
  91.    167  12258000     13546030      1.1     11.4                      for l in xrange(self.image_shape[4]):
  92.    168                                                                   #conv_out[0][i][j][k][l]=de_convolve(inp,i,j,k,l)
  93.    169  11767680     68456676      5.8     57.6                          inp.delta[0][i][j][k][l]*=(1-inp.output[0][i][j][k][l]**2)
  94.    170                                                   #inp.delta/=self.filter_shape[1]
  95.    171                                                  
  96.    172       908          926      1.0      0.0          j=0
  97.    173       908          901      1.0      0.0          k=0
  98.    174       908          893      1.0      0.0          m=0
  99.    175     14528        17035      1.2      0.0          for i in xrange(self.conv_out_shape[1]):
  100.    176     13620       274714     20.2      0.2              ab=numpy.rot90(delta1[0][i],2)
  101.    177     13620     19021998   1396.6     16.0              k+=numpy.asarray(sg.fftconvolve(self.input[0][j],ab,mode='valid'))
  102.    178     13620        22945      1.7      0.0              j+=1
  103.    179     13620        22035      1.6      0.0              if j==self.image_shape[1]:
  104.    180                                                           #k=k/self.image_shape[1]
  105.    181      2724        42974     15.8      0.0                  self.W[0][m]-=eta*k
  106.    182      2724         4077      1.5      0.0                  m+=1
  107.    183      2724         2855      1.0      0.0                  j=0
  108.    184      2724         3986      1.5      0.0                  k=0
  109.  
  110. File: cnv2.py
  111. Function: de_convolve at line 187
  112. Total time: 0 s
  113.  
  114. Line #      Hits         Time  Per Hit   % Time  Line Contents
  115. ==============================================================
  116.    187                                               @profile        
  117.    188                                               def de_convolve(self,inp,i,j,k,l):
  118.    189                                                   kernel_number=int(i/self.image_shape[1])
  119.    190                                                   channel_number=i%self.image_shape[1]
  120.    191                                                   for a in xrange(self.filter_shape[2]):
  121.    192                                                       for b in xrange(self.filter_shape[3]):
  122.    193                                                           for c in xrange(self.filter_shape[4]):
  123.    194                                                               inp.delta[0][channel_number][j+a][k+b][l+c]+=self.delta1[0][i][j][k][l]*self.W[0][kernel_number][a][b][c]
  124.  
  125. File: cnv2.py
  126. Function: de_convolve at line 257
  127. Total time: 0 s
  128.  
  129. Line #      Hits         Time  Per Hit   % Time  Line Contents
  130. ==============================================================
  131.    257                                               @profile
  132.    258                                               def de_convolve(self,inp,i,j,k,l):
  133.    259                                                   kernel_number=int(i/self.image_shape[1])
  134.    260                                                   channel_number=i%self.image_shape[1]
  135.    261                                                   # sum=0
  136.    262                                                   for a in xrange(self.filter_shape[2]):
  137.    263                                                       for b in xrange(self.filter_shape[3]):
  138.    264                                                           for c in xrange(self.filter_shape[4]):
  139.    265                                                               inp.delta[0][channel_number][j+a][k+b][l+c]+=self.delta[i]*self.W[0][kernel_number][a][b][c]
  140.    266                                                   inp.delta/=(self.filter_shape[1]*1.0)
  141.  
  142. File: cnv2.py
  143. Function: gradient at line 320
  144. Total time: 6.91964 s
  145.  
  146. Line #      Hits         Time  Per Hit   % Time  Line Contents
  147. ==============================================================
  148.    320                                               @profile
  149.    321                                               def gradient(self,y,eta):
  150.    322       908          908      1.0      0.0          delta=[]
  151.    323      6356         5675      0.9      0.1          for i in xrange(self.n_out):
  152.    324      5448        37258      6.8      0.5              if y==i:
  153.    325       908         5005      5.5      0.1                  delta.append((self.output[i]-1)*((1-self.output[i])**2))
  154.    326                                                           #delta.append((1-self.output[i])**2)
  155.    327                                                       else:
  156.    328      4540        24846      5.5      0.4                  delta.append((self.output[i]+1)*((1-self.output[i])**2))
  157.    329                                                           #delta.append((1-self.output[i])**2)
  158.    330       908         1488      1.6      0.0          self.delta=delta
  159.    331                                                  
  160.    332       908          708      0.8      0.0          delta_prev=[]
  161.    333       908          590      0.6      0.0          ab=0
  162.    334     69008        44926      0.7      0.6          for i in xrange(self.n_in):
  163.    335    476700       399347      0.8      5.8              for j in xrange(self.n_out):
  164.    336    408600      2367470      5.8     34.2                  ab=ab+self.W[i][j]*delta[j]
  165.    337     68100       334394      4.9      4.8              ab=ab*((1-self.input.output[0][i][0][0][0])**2)
  166.    338     68100        72501      1.1      1.0              delta_prev.append(ab)
  167.    339     68100        45765      0.7      0.7              ab=0
  168.    340       908         5539      6.1      0.1          self.input.delta=delta_prev
  169.    341     69008        44014      0.6      0.6          for i in xrange(self.n_in):
  170.    342    476700       401574      0.8      5.8              for j in xrange(self.n_out):
  171.    343    408600      3092013      7.6     44.7                  self.W[i][j]=self.W[i][j] - (eta*self.input.output[0][i][0][0][0]*delta[j])
  172.    344      6356         5368      0.8      0.1          for i in xrange(self.n_out):
  173.    345      5448        30248      5.6      0.4              self.b[i]=self.b[i]-eta*delta[i]
  174.  
  175. File: cnv2.py
  176. Function: check at line 346
  177. Total time: 674.116 s
  178.  
  179. Line #      Hits         Time  Per Hit   % Time  Line Contents
  180. ==============================================================
  181.    346                                           @profile            
  182.    347                                           def check(learning_rate=0.005, n_epochs=3,dataset='./kth_thesis.pkl',nkerns=[5,3,5], batch_size=1):
  183.    348         1           31     31.0      0.0      rng=numpy.random.RandomState(23455)
  184.    349         1          781    781.0      0.0      f = open('kth_thesis.pkl', 'rb')
  185.    350         1       250610 250610.0      0.0      train_set, test_set = cPickle.load(f)
  186.    351         1          486    486.0      0.0      f.close()
  187.    352         1            2      2.0      0.0      train_set_x, train_set_y=train_set
  188.    353         1        27675  27675.0      0.0      print train_set
  189.    354         1        10882  10882.0      0.0      print test_set
  190.    355                                               #validate_set_x, validate_set_y=validate_set
  191.    356         1            2      2.0      0.0      test_set_x, test_set_y=test_set
  192.    357         1            2      2.0      0.0      n_train_batches = len(train_set_x)
  193.    358         1            1      1.0      0.0      n_test_batches = len(test_set_x)
  194.    359         1           16     16.0      0.0      a=numpy.arange(n_train_batches)
  195.    360         1          665    665.0      0.0      random.shuffle(a)
  196.    361         1            1      1.0      0.0      k=0
  197.    362         1            1      1.0      0.0      k1=0
  198.    363         1            1      1.0      0.0      k2=0
  199.    364         3            6      2.0      0.0      for n in xrange(2):
  200.    365         2           11      5.5      0.0          print "training epoch %d" %n
  201.    366       910         1912      2.1      0.0          for i in xrange(n_train_batches):
  202.    367       908         9975     11.0      0.0              print a[i]
  203.    368       908        13821     15.2      0.0              print 'Output is',train_set_y[a[i]]
  204.    369       908         6806      7.5      0.0              print "training batch %d" %i
  205.    370       908         1819      2.0      0.0              if n==0 and k==0:
  206.    371         1            3      3.0      0.0             print "ffff:  ",k1
  207.    372         1            2      2.0      0.0         k1+=1
  208.    373         1       629517 629517.0      0.1                  layer1=First_Convolution(rng,numpy.reshape(train_set_x[a[i]],(1,1,9,60,80)),(1,1,9,60,80),(1,nkerns[0],4,7,9),(3,3))
  209.    374         1        65571  65571.0      0.0                  layer2=Hidden_Convolution(rng,layer1.output,(1,nkerns[0],6,18,24),(1,nkerns[1],4,7,7),(3,3))
  210.    375         1        39418  39418.0      0.0                  layer3=Last_Convolution(rng,layer2.output,(1,nkerns[0]*nkerns[1],3,4,6),(1,nkerns[2],3,4,6),(1,1))
  211.    376         1         1431   1431.0      0.0                  layer4=LogisticRegession(rng,layer3,nkerns[0]*nkerns[1]*nkerns[2],6)
  212.    377         1            3      3.0      0.0                  k+=1
  213.    378                                                       else:
  214.    379       907         2737      3.0      0.0             print "eeee: ",k2
  215.    380       907         1756      1.9      0.0         k2+=1
  216.    381       907     96017090 105862.3     14.2                  layer1.change_input(numpy.reshape(train_set_x[a[i]],(1,1,9,60,80)))
  217.    382       907     63538186  70053.1      9.4                  layer2.change_input(layer1.output)
  218.    383       907     35686151  39345.3      5.3                  layer3.change_input(layer2.output)
  219.    384       907      1279902   1411.1      0.2                  layer4.change_input(layer3)
  220.    385       908      8624182   9498.0      1.3              layer4.gradient(train_set_y[a[i]],learning_rate)
  221.    386       908     65226791  71835.7      9.7              layer3.gradient(layer2,learning_rate)
  222.    387       908    149080048 164185.1     22.1              layer2.gradient(layer1,learning_rate)
  223.    388       908    191334006 210720.3     28.4              layer1.gradient(learning_rate)
  224.    389                                                      
  225.    390                                          
  226.    391                                          
  227.    392                                          
  228.    393                                                       #if n==0 and i==1:
  229.    394                                                           #print "hi"
  230.    395                                                           #print layer3.W
  231.    396                                                           #print "hi"
  232.    397                                                           #print layer2.output
  233.    398                                                          
  234.    399         2            4      2.0      0.0          error=0.0
  235.    400         2           15      7.5      0.0          print "checking errors"
  236.    401       292          605      2.1      0.0          for i in xrange(n_test_batches):
  237.    402                                          
  238.    403       290     30142955 103941.2      4.5              layer1.change_input(numpy.reshape(test_set_x[i],(1,1,9,60,80)))
  239.    404       290     20284075  69945.1      3.0              layer2.change_input(layer1.output)
  240.    405       290     11417311  39370.0      1.7              layer3.change_input(layer2.output)
  241.    406       290       407123   1403.9      0.1              layer4.change_input(layer3)
  242.    407       290        11160     38.5      0.0              error+=layer4.error(test_set_y[i])
  243.    408         2            6      3.0      0.0          error_percent=(error/n_test_batches)*100
  244.    409                                                   #print layer1.W
  245.    410         2           25     12.5      0.0          print "error %% after %d epoch is " %n,error_percent
Advertisement
Add Comment
Please, Sign In to add comment