Learn practical skills, build real-world projects, and advance your career
Updated 4 years ago
import time
import scipy.io
import numpy as np
import random
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torch.utils.data.dataloader import DataLoader
from torch.autograd import Variable
from torch.utils.data import TensorDataset, random_split
mnist = scipy.io.loadmat('mnist_all.mat')
%matplotlib inline
fig, ax = plt.subplots(1, 3, figsize = (15, 5))
ax[0].matshow(mnist['train0'][random.randint(0,1000)].reshape(28,28), cmap=plt.cm.gray_r)
ax[1].matshow(mnist['train9'][109].reshape(28,28), cmap=plt.cm.gray_r)
ax[2].matshow(mnist['train8'][200].reshape(28,28), cmap=plt.cm.gray_r)
plt.subplots_adjust(wspace = 0, hspace = 0) #odleglosc obrazkow od siebie
def parse_mnist(filename = 'mnist_all.mat', n_cut_train = 1000, n_cut_test = 500, transform = True):
file = scipy.io.loadmat(filename)
train_data = np.zeros((10, n_cut_train, 784))
train_label = np.zeros((10, n_cut_train))
test_data = np.zeros((10, n_cut_test, 784))
test_label = np.zeros((10, n_cut_test))
for i in range(10):
name_train = 'train' + str(i)
name_test = 'test' + str(i)
train_data[i] = file[name_train][:n_cut_train]
train_label[i].fill(i)
test_data[i] = file[name_test][:n_cut_test]
test_label[i].fill(i)
train_data = train_data.reshape(-1, 784)
train_label = train_label.reshape(-1)
test_data = test_data.reshape(-1, 784)
test_label = test_label.reshape(-1)
if transform:
train_data = train_data/255.0
test_data = test_data/255.0
train_data = TensorDataset(torch.from_numpy(np.float32(train_data)), torch.from_numpy(np.int64(train_label)))
test_data = TensorDataset(torch.from_numpy(np.float32(test_data)), torch.from_numpy(np.int64(test_label)))
return train_data, test_data