Der Inhalt ist etwas veraltet, deshalb habe ich ihn in meinem persönlichen Blog umgeschrieben. https://kakedashi-engineer.appspot.com/2020/02/10/mnist/
MNIST ist ein handgeschriebener 28 x 28 Pixel-Nummerndatensatz. Menschen im Bereich Deep Learning verwenden es vorerst häufig als Benchmark.
Jedes Pixel nimmt einen ganzzahligen Wert von 0 bis 255 an. Insgesamt gibt es 70.000 Bilder, von denen 60.000 Trainingsdaten und 10.000 Testdaten sind. Der Punkt ist, dass Trainingsdaten und Testdaten von Anfang an getrennt sind. Ich benutze das manchmal so wie es ist, Von den Trainingsdaten können 10.000 von hinten als Validierungsdaten verwendet werden. (Was sind Validierungsdaten? Lassen Sie uns Google vorzeitig stoppen)
Die Daten sind nicht für jede Klasse angeordnet Zum Beispiel Trainingsdaten
[5 0 4 ..., 8 4 8]
Die Bestellung ist nicht regelmäßig.
Eine Sache zu beachten ist das Verhältnis jeder Zahl. Natürlich dachte ich, dass jede Zahl 6000 + 1000 war, aber als ich sie nachschlug, schien es anders zu sein. Das Bild von "1" ist 24% mehr als das Bild von "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
Es gibt noch etwas zu beachten. Die Anzahl der Pixel in den Ecken eines Bildes kann in jedem der 70.000 Bilder 0 sein. Wenn Sie versuchen, eine Normalisierung Pixel für Pixel durchzuführen, tritt daher eine Nullteilung auf. Im Beispielcode usw. scheint es üblich zu sein, durch 255.0 auf einmal mit numpy usw. zu teilen.
Die Einführung ist länger geworden. Als nächstes werde ich kurz vorstellen, wie MNIST mit Python verwendet wird.
Es kann von der Homepage von 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)
Da es sich um Binärdaten und nicht um Textdaten handelt, werden sie nach entsprechender Verarbeitung verwendet. Wie Sie sehen können, ist es in Trainingsdaten und Testdaten unterteilt, und auch die Bezeichnungen sind unterschiedlich. Übrigens, da das Label ein ganzzahliger Wert von 0 bis 9 ist, denke ich, dass viele Leute es in 1-of-K ausdrücken möchten. In diesem Fall wird sklearn.preprocessing.LabelBinarizer empfohlen.
Mit sklearn müssen Sie nicht herunterladen, und Sie können die folgenden Benchmarks problemlos aufrufen.
python
from sklearn.datasets import *
load_boston()
load_iris()
load_diabetes()
load_digits([n_class])
load_linnerud()
Aber nicht nur das, aus einem Repository für maschinelles Lernen namens mldata.org Sie können die Daten auch herunterladen. Hier gibt es auch MNIST. Das Herunterladen dauert einige Zeit, da die Daten schwer sind. Nach dem Herunterladen wird es in data_home gespeichert, sodass Sie das zweite Mal nicht so lange warten müssen.
python
from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original', data_home=custom_data_home)
Sehr einfach zu bedienen.
Bibliotheken wie TensorFlow und Theano scheinen ihre eigenen Funktionen zum Herunterladen von MNIST zu haben. Wenn Sie sich den Beispielcode ansehen, können Sie sehen, wie er verwendet wird. Es scheint, dass Chainer sklearn verwendet.
Recommended Posts