66import functools
77import math
88import time
9+ import random
910import numpy as np
1011import paddle .fluid as fluid
1112sys .path [0 ] = os .path .join (
1213 os .path .dirname ("__file__" ), os .path .pardir , os .path .pardir )
1314from paddleslim .common import get_logger
1415from paddleslim .analysis import flops
1516from paddleslim .quant import quant_aware , convert
17+ import paddle .vision .transforms as T
1618import models
1719from utility import add_arguments , print_arguments
1820
3537add_arg ('total_images' , int , 1281167 , "The number of total training images." )
3638parser .add_argument ('--step_epochs' , nargs = '+' , type = int , default = [30 , 60 , 90 ], help = "piecewise decay step" )
3739add_arg ('config_file' , str , None , "The config file for compression with yaml format." )
38- add_arg ('data' , str , "imagenet" , "Which data to use. 'mnist' or 'imagenet'" )
40+ add_arg ('data' , str , "imagenet" , "Which data to use. 'mnist', 'cifar10' or 'imagenet'" )
3941add_arg ('log_period' , int , 10 , "Log period in batches." )
4042add_arg ('checkpoint_dir' , str , "output" , "checkpoint save dir" )
43+ add_arg ('ce_test' , bool , False , "Whether to CE test." )
4144# yapf: enable
4245
4346model_list = [m for m in dir (models ) if "__" not in m ]
@@ -81,6 +84,17 @@ def create_optimizer(args):
8184
8285
8386def compress (args ):
87+ num_workers = 4
88+ shuffle = True
89+ if args .ce_test :
90+ # set seed
91+ seed = 111
92+ paddle .seed (seed )
93+ np .random .seed (seed )
94+ random .seed (seed )
95+ num_workers = 0
96+ shuffle = False
97+
8498 ############################################################################################################
8599 # 1. quantization configs
86100 ############################################################################################################
@@ -105,11 +119,21 @@ def compress(args):
105119 'moving_rate' : 0.9 ,
106120 }
107121
122+ pretrain = True
108123 if args .data == "mnist" :
109124 train_dataset = paddle .vision .datasets .MNIST (mode = 'train' )
110125 val_dataset = paddle .vision .datasets .MNIST (mode = 'test' )
111126 class_dim = 10
112127 image_shape = "1,28,28"
128+ elif args .data == "cifar10" :
129+ transform = T .Compose ([T .Transpose (), T .Normalize ([127.5 ], [127.5 ])])
130+ train_dataset = paddle .vision .datasets .Cifar10 (
131+ mode = "train" , backend = "cv2" , transform = transform )
132+ val_dataset = paddle .vision .datasets .Cifar10 (
133+ mode = "test" , backend = "cv2" , transform = transform )
134+ class_dim = 10
135+ image_shape = "3, 32, 32"
136+ pretrain = False
113137 elif args .data == "imagenet" :
114138 import imagenet_reader as reader
115139 train_dataset = reader .ImageNetDataset (mode = 'train' )
@@ -153,11 +177,12 @@ def compress(args):
153177 exe = paddle .static .Executor (place )
154178 exe .run (paddle .static .default_startup_program ())
155179
156- assert os .path .exists (
157- args .pretrained_model ), "pretrained_model doesn't exist"
180+ if pretrain :
181+ assert os .path .exists (
182+ args .pretrained_model ), "pretrained_model doesn't exist"
158183
159- if args .pretrained_model :
160- paddle .static .load (train_prog , args .pretrained_model , exe )
184+ if args .pretrained_model :
185+ paddle .static .load (train_prog , args .pretrained_model , exe )
161186
162187 places = paddle .static .cuda_places (
163188 ) if args .use_gpu else paddle .static .cpu_places ()
@@ -170,8 +195,8 @@ def compress(args):
170195 batch_size = args .batch_size ,
171196 return_list = False ,
172197 use_shared_memory = True ,
173- shuffle = True ,
174- num_workers = 4 )
198+ shuffle = shuffle ,
199+ num_workers = num_workers )
175200 valid_loader = paddle .io .DataLoader (
176201 val_dataset ,
177202 places = place ,
0 commit comments