Le contenu est un peu dépassé, je l'ai donc réécrit sur mon blog personnel. https://kakedashi-engineer.appspot.com/2020/02/10/mnist/
MNIST est un ensemble de données de nombres manuscrits de 28 x 28 pixels. Les gens du domaine du Deep Learning l'utilisent souvent comme référence pour le moment.
Chaque pixel prend une valeur entière de 0 à 255. Il y a 70 000 images au total, dont 60 000 sont des données d'entraînement et 10 000 sont des données de test. Le fait est que les données d'entraînement et les données de test sont séparées depuis le début. J'utilise parfois ceci tel quel, Parmi les données d'entraînement, 10 000 de l'arrière peuvent être utilisées comme données de validation. (Qu'est-ce que les données de validation? Arrêtons tôt sur Google)
Les données ne sont pas organisées pour chaque classe Par exemple, les données d'entraînement
[5 0 4 ..., 8 4 8]
La commande n'est pas régulière.
Une chose à noter est le rapport de chaque nombre. Naturellement, je pensais que chaque nombre était 6000 + 1000, mais quand je l'ai recherché, cela semblait différent. L'image de "1" est 24% de plus que l'image de "5" ...
0 1 2 3 4 5 6 7 8 9
[ 5923. 6742. 5958. 6131. 5842. 5421. 5918. 6265. 5851. 5949.] # training data
[ 980. 1135. 1032. 1010. 982. 892. 958. 1028. 974. 1009.] # test data
[ 6903. 7877. 6990. 7141. 6824. 6313. 6876. 7293. 6825. 6958.] # training data + test data
Il y a encore une chose à noter. Le nombre de pixels dans les coins d'une image peut être égal à 0 dans l'une des 70 000 images. Par conséquent, si vous essayez d'effectuer une normalisation pixel par pixel, une division nulle se produira. Dans un exemple de code, etc., il semble qu'il soit courant de diviser par 255,0 à la fois avec numpy etc.
L'introduction est devenue plus longue. Ensuite, je présenterai brièvement comment utiliser MNIST avec Python.
Il peut être téléchargé depuis la page d'accueil de Yann Le Cun et al.
train-images-idx3-ubyte.gz: training set images (9912422 bytes) train-labels-idx1-ubyte.gz: training set labels (28881 bytes) t10k-images-idx3-ubyte.gz: test set images (1648877 bytes) t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
Puisqu'il s'agit de données binaires et non de données textuelles, elles sont utilisées après un traitement approprié. Comme vous pouvez le voir, il est divisé en données d'entraînement et données de test, et les étiquettes sont également différentes. Au fait, puisque l'étiquette est une valeur entière de 0 à 9, je pense que beaucoup de gens veulent l'exprimer en 1 sur K. Dans un tel cas, sklearn.preprocessing.LabelBinarizer est recommandé.
Avec sklearn, vous n'avez pas besoin de télécharger et vous pouvez facilement appeler les benchmarks suivants.
python
from sklearn.datasets import *
load_boston()
load_iris()
load_diabetes()
load_digits([n_class])
load_linnerud()
Mais pas seulement cela, à partir d'un référentiel de données d'apprentissage automatique appelé mldata.org Vous pouvez également télécharger les données. Il y a aussi MNIST ici. Le téléchargement prendra un certain temps car les données sont lourdes, Une fois téléchargé, il sera enregistré dans data_home, vous n'aurez donc pas à attendre aussi longtemps pour la deuxième fois.
python
from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original', data_home=custom_data_home)
Utilisation très simple.
Les bibliothèques telles que TensorFlow et Theano semblent avoir leurs propres fonctions pour télécharger MNIST. Si vous regardez l'exemple de code, vous pouvez voir comment l'utiliser. Il semble que le chainer utilise sklearn.
Recommended Posts