Example #1
0
def get_data():
    (x_train, t_train), (x_test, t_test) = load_mnist(flatten=True,
                                                      normalize=False)
    return x_test, t_test
Example #2
0
    def __init__(self,
                 name='mnist',
                 source='./data/mnist/',
                 batch_size=64,
                 seed=0):

        self.name = name
        self.source = source
        self.batch_size = batch_size
        self.seed = seed
        np.random.seed(
            seed)  # To make your "random" minibatches the same for experiments

        self.count = 0

        # the dimension of vectorized and orignal data samples
        if self.name == 'mnist':
            self.data_vec_dim = 784  #28x28
            self.data_origin_shape = [28, 28, 1]
        elif self.name in ['mnist-1k']:
            self.data_vec_dim = 2352  #28x28x3
            self.data_origin_shape = [28, 28, 3]
        elif self.name in ['cifar10', 'cifar100', 'imagenet_32']:
            self.data_vec_dim = 3072  #32x32x3
            self.data_origin_shape = [32, 32, 3]
            self.nb_splits = 32
        elif self.name == 'celeba':
            self.data_vec_dim = 12288  #64x64x3
            self.data_origin_shape = [64, 64, 3]
        elif self.name == 'stl10':
            self.data_vec_dim = 6912  # 48x48x3
            self.data_origin_shape = [48, 48, 3]
        else:
            self.data_vec_dim = 0  #0
            self.data_origin_shape = [0, 0, 0]
            print('[dataset.py - __init__] dbname = %s is unrecognized.\n' %
                  (self.name))
            exit()

        tf.set_random_seed(
            self.seed
        )  # Fix the random seed for randomized tensorflow operations.

        if name == 'mnist':
            self.data, self.labels = load_mnist(self.source)
            self.minibatches, self.minilabels = self.random_mini_batches(
                self.data.T, self.labels.T, self.batch_size, self.seed)
        elif name == 'mnist-1k':
            self.data_mnist, self.labels_mnist = load_mnist(self.source)
            self.nb_mnist = np.shape(self.data_mnist)[0]
        elif name == 'cifar10':
            data_files = [
                'data_batch_1', 'data_batch_2', 'data_batch_3', 'data_batch_4',
                'data_batch_5'
            ]
            self.data, self.labels = load_cifar10(source, data_files)
            self.labels = np.reshape(self.labels, (-1, 1))
            self.minibatches, self.minilabels = self.random_mini_batches(
                self.data.T, self.labels.T, self.batch_size, self.seed)
        elif name == 'cifar100':
            data_files = ['train']
            self.data, self.labels = load_cifar100(source, data_files)
            self.labels = np.reshape(self.labels, (-1, 1))
            self.minibatches, self.minilabels = self.random_mini_batches(
                self.data.T, self.labels.T, self.batch_size, self.seed)
        elif name == 'celeba':
            load_celeba(self.source)
            self.im_list, \
            self.nb_imgs, \
            self.nb_compl_batches, \
            self.nb_total_batches = prepare_image_list(source, 'jpg', self.batch_size)
            self.count = 0
            self.color_space = 'RGB'
        elif name == 'stl10':
            load_stl10(self.source)
            self.im_list, \
            self.nb_imgs, \
            self.nb_compl_batches, \
            self.nb_total_batches = prepare_image_list(source, 'png', self.batch_size)
            self.count = 0
            self.color_space = 'RGB'
        elif name == 'imagenet_32':
            load_imagenet_32(self.source, self.nb_splits)
            self.minibatches = self.random_mini_batches([], self.batch_size,
                                                        self.seed)
            print('[dataset.py -- __init__] The number of minibatches = %s' %
                  (len(self.minibatches)))
            #self.im_list, \
            #self.nb_imgs, \
            #self.nb_compl_batches, \
            #self.nb_total_batches = prepare_image_list(source, 'jpg', self.batch_size)
            self.count = 0
Example #3
0
import numpy as np
from modules.mnist import load_mnist
from modules.two_layer_net import TwoLayerNet

(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True,
                                                  one_hot_label=True)

network = TwoLayerNet(input_size=784, hidden_size=50, output_size=10)

# 하이퍼파라미터
iters_num = 10000  # 반복 횟수
print(x_train.shape)
train_size = x_train.shape[0]
batch_size = 100  # 미니배치 크기
learning_rate = 0.1

train_loss_list = []
train_acc_list = []
test_acc_list = []

# 1에폭당 반복 수
iter_per_epoch = max(train_size / batch_size, 1)

for i in range(iters_num):
    # 미니배치 획득
    batch_mask = np.random.choice(train_size, batch_size)
    x_batch = x_train[batch_mask]
    t_batch = t_train[batch_mask]

    # 기울기 계산
    grad = network.numerical_gradient(x_batch, t_batch)