[PYTHON] Ensemble de données "Moving MNIST"

introduction

Moving MNIST est un ensemble de test pour évaluer la prédiction et la reconstruction de séquence. Une collection d'images créées pour que les chiffres manuscrits se déplacent sur l'écran.

000000.gif La gauche est l'ensemble de données et la droite est un exemple de la prédiction. Extrait de ce site.

Il existe 10 000 types de données, chacun contenant 20 images. La taille de l'image est de 64 x 64 et elle montre deux nombres.

Lire les données

Vous pouvez le télécharger depuis ce site.

!curl -o mnist_test_seq.npy http://www.cs.toronto.edu/~nitish/unsupervised_video/mnist_test_seq.npy

Lisez les données.

import numpy as np

path="./mnist_test_seq.npy"
data = np.load(path)

print(data.shape)  # (20, 10000, 64, 64)

Utilisez ipywidgets pour vous assurer qu'il s'agit d'une vidéo.

%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact

def f(k):
    plt.imshow(data[k][0], 'gray')
    plt.show()

interact(f, k=(0,19,1) )

タイトルなし.gif

Il existe 10 000 de ces ensembles.

Comment créer un ensemble de données lors de la prédiction de 10 images en utilisant 10 images.

import numpy as np
from torch.utils.data import Dataset


class MovingMnistDataset(Dataset):
    def __init__(self, path="./mnist_test_seq.npy"):
        self.data = np.load(path)
        # (t, N, H, W) -> (N, t, C, H, W)
        self.data = self.data.transpose(1, 0, 2, 3)[:, :, None, ...]

    def __len__(self):
        return len(self.data)

    def __getitem__(self, i):
        return self.data[i, :10, ...].astype(np.int32), self.data[i, 10:, ...].astype(np.int32)

dataset = MovingMnistDataset()

Recommended Posts

Ensemble de données "Moving MNIST"
Génération d'ensembles de données
Ensemble de données pour l'apprentissage automatique
Ensemble de données artificielles (fonction sinus)
[MNIST] Convertir les données en PNG pour les keras