def get_data(): (x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False) return x_test, t_test
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
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)