Пример #1
0
    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])
Пример #2
0
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')
Пример #4
0
    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
Пример #5
0
    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))
    ]))
Пример #6
0
# 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)