11import sys , os
22sys .path .insert (1 , os .path .split (os .path .split (sys .path [0 ])[0 ])[0 ])
3- import cPickle as pkl
3+ import pickle as pkl
44import numpy as np
55from sklearn import preprocessing
66from sklearn .utils import shuffle
77from classes .neural_net import NeuralNetwork
88
9+
910def unpickle (file ):
1011 fo = open (file , 'rb' )
11- dict = pkl .load (fo )
12+ dict = pkl .load (fo , encoding = 'latin1' )
1213 fo .close ()
1314 return dict
1415
@@ -20,7 +21,7 @@ def unpickle(file):
2021
2122test_images = None
2223test_labels = []
23- for i in xrange (1 , 6 ):
24+ for i in range (1 , 6 ):
2425 data = unpickle (sys .path [0 ] + '/data_batch_' + str (i ))
2526 if train_images is None :
2627 train_images = data ['data' ]
@@ -29,75 +30,66 @@ def unpickle(file):
2930
3031 train_labels += data ['labels' ]
3132
32- # train_images = train_images[:100]
33- # train_labels = train_labels[:100]
34-
3533train_images = train_images .reshape (- 1 , 3 , 32 , 32 )
3634train_images = train_images .astype (np .float128 )
37- train_images /= 255.0
38-
39- r_mean = np .average (train_images [:, 0 ])
40- g_mean = np .average (train_images [:, 1 ])
41- b_mean = np .average (train_images [:, 2 ])
4235
43- train_images [:, 0 ] -= r_mean
44- train_images [:, 1 ] -= g_mean
45- train_images [:, 2 ] -= b_mean
36+ mean_image = np .mean (train_images , axis = 0 )
37+ train_images -= mean_image
38+ std = np .std (train_images , axis = 0 )
39+ train_images /= std
4640
4741train_images = train_images .astype (np .float32 )
4842
4943data = unpickle (sys .path [0 ] + '/test_batch' )
5044test_images = data ['data' ].reshape (- 1 , 3 , 32 , 32 )
5145test_images = test_images .astype (np .float128 )
52- test_images /= 255.0
5346
54- test_images [:, 0 ] -= r_mean
55- test_images [:, 1 ] -= g_mean
56- test_images [:, 2 ] -= b_mean
47+ test_images -= mean_image
48+ test_images /= std
5749
58- test_images .astype (np .float32 )
50+ test_images = test_images .astype (np .float32 )
5951
6052test_labels = data ['labels' ]
6153
6254lr = 1e-4
63- dropout_percent = 0.5
64- l2_reg = 4e-7
65- learning_rate_decay = np .float32 (99e -2 )
66- batch_size = 10
55+ dropout_percent = 0.4
56+ l2_reg = 3e-6
57+ learning_rate_decay = np .float32 (100e -2 )
58+ batch_size = 1
6759
6860cnn = NeuralNetwork (train_images .shape [1 :],
6961 [
70- {'type' : 'conv' , 'k' : 16 , 'u_type' : 'adam ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
62+ {'type' : 'conv' , 'k' : 16 , 'u_type' : 'nag ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
7163 {'type' : 'pool' },
72- {'type' : 'conv' , 'k' : 20 , 'u_type' : 'adam ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
64+ {'type' : 'conv' , 'k' : 20 , 'u_type' : 'nag ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
7365 {'type' : 'pool' },
74- {'type' : 'conv' , 'k' : 20 , 'u_type' : 'adam ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
66+ {'type' : 'conv' , 'k' : 20 , 'u_type' : 'nag ' , 'f' : 5 , 's' : 1 , 'p' : 2 },
7567 {'type' : 'pool' },
7668 {'type' : 'output' , 'k' : len (le .classes_ ), 'u_type' : 'adam' }
7769 ]
7870 , lr , l2_reg = l2_reg , dropout_p = dropout_percent )
7971
8072cnn .epoch_count = 0
8173
82- for i in xrange (60000000 ):
74+ for i in range (60000000 ):
8375 start = i * batch_size % len (train_images )
8476 end = start + batch_size
8577
8678 if start == 0 and i != 0 :
8779 cnn .epoch_count += 1
8880 train_images , train_labels = shuffle (train_images , train_labels )
89- print '{} epoch finish. learning rate is {}' .format (str (cnn .epoch_count ), str (cnn .lr ))
81+ print ( '{} epoch finish. learning rate is {}' .format (str (cnn .epoch_count ), str (cnn .lr ) ))
9082 cnn .lr *= learning_rate_decay
9183
92- loss , acc = cnn .predict (train_images [:4000 ], train_labels [:4000 ])
93- print 'training acc:{}' .format (acc )
94- print 'training loss:{}' .format (loss )
84+ loss , acc = cnn .predict (train_images [:2000 ], train_labels [:2000 ])
85+ print ( 'training acc:{}' .format (acc ) )
86+ print ( 'training loss:{}' .format (loss ) )
9587
96- test_loss , test_acc = cnn .predict (test_images , test_labels )
97- print 'test acc:{}' .format (test_acc )
98- print 'test loss:{}' .format (test_loss )
88+ test_loss , test_acc = cnn .predict (test_images [: 5000 ] , test_labels [: 5000 ] )
89+ print ( 'test acc:{}' .format (test_acc ) )
90+ print ( 'test loss:{}' .format (test_loss ) )
9991
10092 cnn .t += 1
10193 loss , acc = cnn .epoch (train_images [start :end ], train_labels [start :end ])
102- # print loss
103- # print acc
94+ # print( loss)
95+ # print( acc)
0 commit comments