def get_data(self): if (self.dataset_type == "MNIST"): mnist = mx.test_utils.get_mnist() self.X_train, self.X_test, self.y_train, self.y_test = ( mnist['train_data'], mnist['test_data'], mnist['train_label'], mnist['test_label']) self.X_CNN, self.y_CNN = self.X_train, self.y_train self.prefix = 'cnn_models/mnist' self.epoch = 16 elif (self.dataset_type == "cifar10"): def prepare(data, split=False): if (split): data._get_data() x = data._data.asnumpy() x = np.swapaxes(x, 2, 3) x = np.swapaxes(x, 1, 2) x1 = x[x.shape[0] / 2:] x2 = x[0:x.shape[0] / 2] y = data._label y1 = y[y.shape[0] / 2:] y2 = y[0:y.shape[0] / 2] return x1, y1, x2, y2 else: data._get_data() x = data._data.asnumpy() x = np.swapaxes(x, 2, 3) x = np.swapaxes(x, 1, 2) y = data._label return (x, y) train_data = CIFAR10(train=True) split = False #TODO: remove this feature maybe if split: self.X_train, self.y_train, self.X_CNN, self.y_CNN = prepare( train_data, split=True) else: self.X_train, self.y_train = prepare(train_data) self.X_CNN, self.y_CNN = self.X_train, self.y_train val_data = CIFAR10(train=False) self.X_test, self.y_test = prepare(val_data) self.prefix = 'cnn_models/resnet20' self.epoch = 125 train_shape = self.X_train.shape CNN_shape = self.X_CNN.shape test_shape = self.X_test.shape self.X_train_flat = self.X_train.reshape( train_shape[0], train_shape[1] * train_shape[2] * train_shape[3]) self.X_CNN_flat = self.X_CNN.reshape( CNN_shape[0], CNN_shape[1] * CNN_shape[2] * CNN_shape[3]) self.X_test_flat = self.X_test.reshape( test_shape[0], test_shape[1] * test_shape[2] * test_shape[3])
def predict(prefix, epoch): #val_iter = mx.io.ImageRecordIter ( # path_imgrec="dataset/cifar10_val.rec", data_name="data", label_name="softmax_label", #batch_size=100, data_shape=(3, 32, 32)) def prepare(data): data._get_data() x = data._data.asnumpy() x = np.swapaxes(x, 2, 3) x = np.swapaxes(x, 1, 2) y = data._label return (x, y) val_data = CIFAR10(train=False) X_test, y_test = prepare(val_data) val_iter = mx.io.NDArrayIter(X_test, y_test, 100) sym, args, auxs = mx.model.load_checkpoint(prefix, epoch) mod = mx.mod.Module(symbol=sym, context=mx.gpu()) mod.bind(for_training=False, data_shapes=val_iter.provide_data, label_shapes=val_iter.provide_label) mod.set_params(args, auxs) result = mod.score(val_iter, mx.metric.Accuracy()) print result
def get_training_data(batch_size): """ helper function to get dataloader""" return gluon.data.DataLoader(CIFAR10(train=True).transform(transformer), batch_size=batch_size, shuffle=True, last_batch='discard')
transforms.ToTensor(), transforms.Normalize(cfg.CIFAR10_MEAN, cfg.CIFAR10_STD) ]) test_transformer = transforms.Compose([ transforms.ToTensor(), transforms.Normalize(cfg.CIFAR10_MEAN, cfg.CIFAR10_STD) ]) LOG(INFO, 'Data Transformers defining done') # ### 2.2 Load Dataset # In[4]: train_dataset = CIFAR10(train=True) test_dataset = CIFAR10(train=False) LOG(INFO, 'Dataset loading done') # In[5]: X, y = train_dataset[:10] vis.show_images(X, 1, 10, titles=[cfg.CIFAR_CLASSES[cls] for cls in y]) # ### 2.3 Define Data Loaders # In[6]: BATCH_SIZE = cfg.BATCH_SIZE
context = mx.gpu(0) else: context = mx.cpu() if opt.dataset in ['imagenet', 'folder', 'lfw']: # folder dataset dataset = ImageFolderDataset(root=opt.dataroot).transform_first(transforms.Compose([ gluon.data.vision.transforms.Resize(opt.imageSize, keep_ratio=True, interpolation=3), transforms.CenterCrop(opt.imageSize), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), ])) elif opt.dataset == 'cifar10': dataset = CIFAR10(root=opt.dataroot, train=True).transform_first(transforms.Compose([ gluon.data.vision.transforms.Resize(opt.imageSize, keep_ratio=True, interpolation=3), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), ]) ) elif opt.dataset == 'mnist': dataset = MNIST(root=opt.dataroot, train=True).transform_first(transforms.Compose([ gluon.data.vision.transforms.Resize(opt.imageSize, keep_ratio=True, interpolation=3), transforms.ToTensor(), transforms.Normalize((0.5), (0.5)), ])) elif opt.dataset == 'rem_face': dataset, _ = load_rem_face() dataset = dataset.transform_first(transforms.Compose([ gluon.data.vision.transforms.Resize(opt.imageSize, keep_ratio=True, interpolation=3), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) ]))
# coding=utf-8 from mxnet.gluon.data.vision import CIFAR10 import mxnet # 目前读取的数据集是int8类型的,然而网络的输入要求是float类型的, # 所以要进行转化,具体转化在 _train_data = CIFAR10(root="./dataset/cifar10", train=True) _test_data = CIFAR10(root="./dataset/cifar10", train=False)