Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- File: cnv2.py
- Function: change_input at line 66
- Total time: 123.166 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 66 @profile
- 67 def change_input(self,input1):
- 68 1197 2643 2.2 0.0 self.input=input1
- 69 7182 14651 2.0 0.0 for i in xrange(self.conv_out_shape[1]):
- 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')
- 71 22743 21437 0.9 0.0 for k in xrange(self.pooled_shape[3]):
- 72 538650 565004 1.0 0.5 for l in xrange(self.pooled_shape[4]):
- 73 517104 9406727 18.2 7.6 output1 = numpy.sum(self.conv_out[0, :, :, k*3: (k*3) +1, l*3:(l+1)*3])
- 74 517104 9714187 18.8 7.9 output1 += numpy.sum(self.conv_out[0, :, :, k*3 + 2, l*3:(l+1)*3])/9.0
- 75 517104 3098968 6.0 2.5 output1 += self.b
- 76 517104 4286071 8.3 3.5 self.pooled[0, :, :, k, l] = numpy.tanh(output1)
- 77 #for i in xrange(self.pooled_shape[1]):
- 78 # for j in xrange(self.pooled_shape[2]):
- 79 # for k in xrange(self.pooled_shape[3]):
- 80 # for l in xrange(self.pooled_shape[4]):
- 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])
- 82
- 83 1197 1860 1.6 0.0 self.output=self.pooled
- File: cnv2.py
- Function: gradient at line 87
- Total time: 191.169 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 87 @profile
- 88 def gradient(self,eta):
- 89 5448 5613 1.0 0.0 for i in xrange(len(self.b)):
- 90 31780 38078 1.2 0.0 for j in xrange(len(self.b[i])):
- 91 27240 555889 20.4 0.3 self.b[i][j]-=eta*numpy.asarray(self.delta[0][i][j]).sum()
- 92 908 62769 69.1 0.0 delta1=numpy.asarray(numpy.zeros(self.conv_out_shape))
- 93 5448 5753 1.1 0.0 for i in xrange(self.conv_out_shape[1]):
- 94 31780 44246 1.4 0.0 for j in xrange(self.conv_out_shape[2]):
- 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
- 96
- 97 5448 13904 2.6 0.0 for i in xrange(self.filter_shape[1]):
- 98 4540 114587 25.2 0.1 t=numpy.rot90(delta1[0][i],2)
- 99 4540 186365030 41049.6 97.5 self.W[0][i]-=sg.fftconvolve(self.input[0][0],t,mode='valid')*eta
- File: cnv2.py
- Function: change_input at line 131
- Total time: 80.3559 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 131 @profile
- 132 def change_input(self,input1):
- 133 1197 1493 1.2 0.0 self.input=input1
- 134 19152 28890 1.5 0.0 for i in xrange(self.conv_out_shape[1]):
- 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')
- 136 19152 17728 0.9 0.0 for i in xrange(self.pooled_shape[1]):
- 137 71820 75800 1.1 0.1 for j in xrange(self.pooled_shape[2]):
- 138 269325 266134 1.0 0.3 for k in xrange(self.pooled_shape[3]):
- 139 1508220 1803097 1.2 2.2 for l in xrange(self.pooled_shape[4]):
- 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])
- 141
- 142 1197 1602 1.3 0.0 self.output=self.pooled
- File: cnv2.py
- Function: gradient at line 147
- Total time: 118.821 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 147 @profile
- 148 def gradient(self,inp,eta):
- 149
- 150 14528 15733 1.1 0.0 for i in xrange(len(self.b)):
- 151 54480 86474 1.6 0.1 for j in xrange(len(self.b[i])):
- 152 40860 812427 19.9 0.7 self.b[i][j]-=eta*numpy.asarray(self.delta[0][i][j]).sum()
- 153 908 14951 16.5 0.0 delta1=numpy.asarray(numpy.zeros(self.conv_out_shape))
- 154 14528 15367 1.1 0.0 for i in xrange(self.conv_out_shape[1]):
- 155 54480 85907 1.6 0.1 for j in xrange(self.conv_out_shape[2]):
- 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
- 157 908 1921 2.1 0.0 self.delta1=delta1
- 158
- 159
- 160 908 8391 9.2 0.0 inp.delta=numpy.zeros(self.image_shape)
- 161 14528 25907 1.8 0.0 for i in xrange(self.conv_out_shape[1]):
- 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')
- 163 908 46464 51.2 0.0 inp.delta/=(self.filter_shape[1]*1.0)
- 164 5448 7056 1.3 0.0 for i in xrange(self.image_shape[1]):
- 165 31780 34316 1.1 0.0 for j in xrange(self.image_shape[2]):
- 166 517560 522186 1.0 0.4 for k in xrange(self.image_shape[3]):
- 167 12258000 13546030 1.1 11.4 for l in xrange(self.image_shape[4]):
- 168 #conv_out[0][i][j][k][l]=de_convolve(inp,i,j,k,l)
- 169 11767680 68456676 5.8 57.6 inp.delta[0][i][j][k][l]*=(1-inp.output[0][i][j][k][l]**2)
- 170 #inp.delta/=self.filter_shape[1]
- 171
- 172 908 926 1.0 0.0 j=0
- 173 908 901 1.0 0.0 k=0
- 174 908 893 1.0 0.0 m=0
- 175 14528 17035 1.2 0.0 for i in xrange(self.conv_out_shape[1]):
- 176 13620 274714 20.2 0.2 ab=numpy.rot90(delta1[0][i],2)
- 177 13620 19021998 1396.6 16.0 k+=numpy.asarray(sg.fftconvolve(self.input[0][j],ab,mode='valid'))
- 178 13620 22945 1.7 0.0 j+=1
- 179 13620 22035 1.6 0.0 if j==self.image_shape[1]:
- 180 #k=k/self.image_shape[1]
- 181 2724 42974 15.8 0.0 self.W[0][m]-=eta*k
- 182 2724 4077 1.5 0.0 m+=1
- 183 2724 2855 1.0 0.0 j=0
- 184 2724 3986 1.5 0.0 k=0
- File: cnv2.py
- Function: de_convolve at line 187
- Total time: 0 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 187 @profile
- 188 def de_convolve(self,inp,i,j,k,l):
- 189 kernel_number=int(i/self.image_shape[1])
- 190 channel_number=i%self.image_shape[1]
- 191 for a in xrange(self.filter_shape[2]):
- 192 for b in xrange(self.filter_shape[3]):
- 193 for c in xrange(self.filter_shape[4]):
- 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]
- File: cnv2.py
- Function: de_convolve at line 257
- Total time: 0 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 257 @profile
- 258 def de_convolve(self,inp,i,j,k,l):
- 259 kernel_number=int(i/self.image_shape[1])
- 260 channel_number=i%self.image_shape[1]
- 261 # sum=0
- 262 for a in xrange(self.filter_shape[2]):
- 263 for b in xrange(self.filter_shape[3]):
- 264 for c in xrange(self.filter_shape[4]):
- 265 inp.delta[0][channel_number][j+a][k+b][l+c]+=self.delta[i]*self.W[0][kernel_number][a][b][c]
- 266 inp.delta/=(self.filter_shape[1]*1.0)
- File: cnv2.py
- Function: gradient at line 320
- Total time: 6.91964 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 320 @profile
- 321 def gradient(self,y,eta):
- 322 908 908 1.0 0.0 delta=[]
- 323 6356 5675 0.9 0.1 for i in xrange(self.n_out):
- 324 5448 37258 6.8 0.5 if y==i:
- 325 908 5005 5.5 0.1 delta.append((self.output[i]-1)*((1-self.output[i])**2))
- 326 #delta.append((1-self.output[i])**2)
- 327 else:
- 328 4540 24846 5.5 0.4 delta.append((self.output[i]+1)*((1-self.output[i])**2))
- 329 #delta.append((1-self.output[i])**2)
- 330 908 1488 1.6 0.0 self.delta=delta
- 331
- 332 908 708 0.8 0.0 delta_prev=[]
- 333 908 590 0.6 0.0 ab=0
- 334 69008 44926 0.7 0.6 for i in xrange(self.n_in):
- 335 476700 399347 0.8 5.8 for j in xrange(self.n_out):
- 336 408600 2367470 5.8 34.2 ab=ab+self.W[i][j]*delta[j]
- 337 68100 334394 4.9 4.8 ab=ab*((1-self.input.output[0][i][0][0][0])**2)
- 338 68100 72501 1.1 1.0 delta_prev.append(ab)
- 339 68100 45765 0.7 0.7 ab=0
- 340 908 5539 6.1 0.1 self.input.delta=delta_prev
- 341 69008 44014 0.6 0.6 for i in xrange(self.n_in):
- 342 476700 401574 0.8 5.8 for j in xrange(self.n_out):
- 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])
- 344 6356 5368 0.8 0.1 for i in xrange(self.n_out):
- 345 5448 30248 5.6 0.4 self.b[i]=self.b[i]-eta*delta[i]
- File: cnv2.py
- Function: check at line 346
- Total time: 674.116 s
- Line # Hits Time Per Hit % Time Line Contents
- ==============================================================
- 346 @profile
- 347 def check(learning_rate=0.005, n_epochs=3,dataset='./kth_thesis.pkl',nkerns=[5,3,5], batch_size=1):
- 348 1 31 31.0 0.0 rng=numpy.random.RandomState(23455)
- 349 1 781 781.0 0.0 f = open('kth_thesis.pkl', 'rb')
- 350 1 250610 250610.0 0.0 train_set, test_set = cPickle.load(f)
- 351 1 486 486.0 0.0 f.close()
- 352 1 2 2.0 0.0 train_set_x, train_set_y=train_set
- 353 1 27675 27675.0 0.0 print train_set
- 354 1 10882 10882.0 0.0 print test_set
- 355 #validate_set_x, validate_set_y=validate_set
- 356 1 2 2.0 0.0 test_set_x, test_set_y=test_set
- 357 1 2 2.0 0.0 n_train_batches = len(train_set_x)
- 358 1 1 1.0 0.0 n_test_batches = len(test_set_x)
- 359 1 16 16.0 0.0 a=numpy.arange(n_train_batches)
- 360 1 665 665.0 0.0 random.shuffle(a)
- 361 1 1 1.0 0.0 k=0
- 362 1 1 1.0 0.0 k1=0
- 363 1 1 1.0 0.0 k2=0
- 364 3 6 2.0 0.0 for n in xrange(2):
- 365 2 11 5.5 0.0 print "training epoch %d" %n
- 366 910 1912 2.1 0.0 for i in xrange(n_train_batches):
- 367 908 9975 11.0 0.0 print a[i]
- 368 908 13821 15.2 0.0 print 'Output is',train_set_y[a[i]]
- 369 908 6806 7.5 0.0 print "training batch %d" %i
- 370 908 1819 2.0 0.0 if n==0 and k==0:
- 371 1 3 3.0 0.0 print "ffff: ",k1
- 372 1 2 2.0 0.0 k1+=1
- 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))
- 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))
- 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))
- 376 1 1431 1431.0 0.0 layer4=LogisticRegession(rng,layer3,nkerns[0]*nkerns[1]*nkerns[2],6)
- 377 1 3 3.0 0.0 k+=1
- 378 else:
- 379 907 2737 3.0 0.0 print "eeee: ",k2
- 380 907 1756 1.9 0.0 k2+=1
- 381 907 96017090 105862.3 14.2 layer1.change_input(numpy.reshape(train_set_x[a[i]],(1,1,9,60,80)))
- 382 907 63538186 70053.1 9.4 layer2.change_input(layer1.output)
- 383 907 35686151 39345.3 5.3 layer3.change_input(layer2.output)
- 384 907 1279902 1411.1 0.2 layer4.change_input(layer3)
- 385 908 8624182 9498.0 1.3 layer4.gradient(train_set_y[a[i]],learning_rate)
- 386 908 65226791 71835.7 9.7 layer3.gradient(layer2,learning_rate)
- 387 908 149080048 164185.1 22.1 layer2.gradient(layer1,learning_rate)
- 388 908 191334006 210720.3 28.4 layer1.gradient(learning_rate)
- 389
- 390
- 391
- 392
- 393 #if n==0 and i==1:
- 394 #print "hi"
- 395 #print layer3.W
- 396 #print "hi"
- 397 #print layer2.output
- 398
- 399 2 4 2.0 0.0 error=0.0
- 400 2 15 7.5 0.0 print "checking errors"
- 401 292 605 2.1 0.0 for i in xrange(n_test_batches):
- 402
- 403 290 30142955 103941.2 4.5 layer1.change_input(numpy.reshape(test_set_x[i],(1,1,9,60,80)))
- 404 290 20284075 69945.1 3.0 layer2.change_input(layer1.output)
- 405 290 11417311 39370.0 1.7 layer3.change_input(layer2.output)
- 406 290 407123 1403.9 0.1 layer4.change_input(layer3)
- 407 290 11160 38.5 0.0 error+=layer4.error(test_set_y[i])
- 408 2 6 3.0 0.0 error_percent=(error/n_test_batches)*100
- 409 #print layer1.W
- 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