[PYTHON] Verschiedene Möglichkeiten, Mnist zu importieren

(Dieser Artikel ist eine Umschreibung für Qiita, die unter [hier] geschrieben wurde (https://erdeserdes.blogspot.com/2020/04/mnist.html).)

Einführung

Handschriftliche Zeichenerkennungsdatensätze sind bekannte Datensätze.

Es ist so vorbereitet, dass es aus verschiedenen Bibliotheken verwendet werden kann, aber zu dieser Zeit dachte ich: "Ich lese keine Dateien von außen" (← Ich denke jetzt, ich verstehe nicht gut) oder aus dem Netz Selbst wenn ich es nachgeschlagen habe, gab es verschiedene Möglichkeiten, es zu lesen, und ich war verwirrt, weil ich die Beziehung nicht verstand.

Ich dachte, dass es andere Leute wie diese geben könnte, also schrieb ich es, um die Informationen zu organisieren.

Annahme

Wir gehen davon aus, dass sklearn, tensorflow und pytorch installiert sind. (Ich habe Anaconda verwendet, um die Umgebung vorzubereiten)

Nicht alle sklearn, tensorflow und pytorch sind erforderlich. Es bedeutet, jeden Fall zu erklären.

Das Betriebssystem ist Mac OS X.

Hinweis

Es handelt sich um einen sogenannten handgeschriebenen Datensatz zur Zeichenerkennung, es gibt jedoch zwei ähnliche.

Einer ist der Datensatz für die handschriftliche Zeichenerkennung, der mit der sklearn-Installation geliefert wird (standardmäßig enthalten).

Das zweite wurde durch ein anderes Verfahren als das obige erhalten.

Das erste besteht aus einem 8x8-Pixel-Bild.

Das zweite besteht aus einem 28x28 Pixel großen Bild.

Beide wurden bei der Suche nach "handschriftlicher Zeichenerkennung" oder "Mnist" erwischt, und irgendwie war die Atmosphäre des Bildes dieselbe, so dass ich auf verschiedene Weise verwirrt war.

Standardinstallation von sklearn (8 x 8 Größendaten)

Speicherort des Datensatzes

Der sklearn-Standarddatensatz finden Sie unter:

 /(Teile, die je nach Umgebung unterschiedlich sind)/lib/python3.7/site-packages/sklearn/datasets

Als Referenz siehe die Verzeichnisstruktur in meinem Fall. (Ich benutze Anaconda)

$ls  /Users/hiroshi/opt/anaconda3/lib/python3.7/site-packages/sklearn/    //Zeigen Sie die Liste der durch den Pfad angegebenen Dateien und Verzeichnisse an

__check_build			dummy.py			model_selection
__init__.py			ensemble			multiclass.py
__pycache__			exceptions.py			multioutput.py
_build_utils			experimental			naive_bayes.py
_config.py			externals			neighbors
_distributor_init.py		feature_extraction		neural_network
_isotonic.cpython-37m-darwin.so	feature_selection		pipeline.py
base.py				gaussian_process		preprocessing
calibration.py			impute				random_projection.py
cluster				inspection			semi_supervised
compose				isotonic.py			setup.py
conftest.py			kernel_approximation.py		svm
covariance			kernel_ridge.py			tests
cross_decomposition		linear_model			tree
datasets			manifold			utils
decomposition			metrics
discriminant_analysis.py	mixture

Und wenn Sie sich den Datensatzordner darin ansehen,

s /Users/hiroshi/opt/anaconda3/lib/python3.7/site-packages/sklearn/datasets

__init__.py					california_housing.py
__pycache__					covtype.py
_base.py					data
_california_housing.py				descr
_covtype.py					images
_kddcup99.py					kddcup99.py
_lfw.py						lfw.py
_olivetti_faces.py				olivetti_faces.py
_openml.py					openml.py
_rcv1.py					rcv1.py
_samples_generator.py				samples_generator.py
_species_distributions.py			setup.py
_svmlight_format_fast.cpython-37m-darwin.so	species_distributions.py
_svmlight_format_io.py				svmlight_format.py
_twenty_newsgroups.py				tests
base.py						twenty_newsgroups.py

Es ist geworden.

Neben der handschriftlichen Zeichenerkennung stehen hier auch Datensätze zur Verfügung.

Gehen Sie außerdem tiefer in den Ordner.

$ ls /Users/hiroshi/opt/anaconda3/lib/python3.7/site-packages/sklearn/datasets/data
boston_house_prices.csv		diabetes_target.csv.gz		linnerud_exercise.csv
breast_cancer.csv		digits.csv.gz			linnerud_physiological.csv
diabetes_data.csv.gz		iris.csv			wine_data.csv

Hier finden Sie die Datensätze iris und boston_house_prices, die häufig in Artikeln zum Thema sklearn zitiert werden.

So importieren Sie einen Datensatz

Obwohl der Code auf der offiziellen Seite von sklearn der gleiche ist.

Die folgende Arbeit wird ausgeführt, indem Python vom Terminal aus gestartet wird.

>>> from sklearn.datasets import load_digits
>>> import matplotlib.pyplot as plt
>>> digit=load_digits()
>>> digit.data.shape
(1797, 64)      // (8×8=Als 64-Spalten-Matrix gespeichert)

>>> plt.gray()
>>> digit.images[0]
array([[ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.],
       [ 0.,  0., 13., 15., 10., 15.,  5.,  0.],
       [ 0.,  3., 15.,  2.,  0., 11.,  8.,  0.],
       [ 0.,  4., 12.,  0.,  0.,  8.,  8.,  0.],
       [ 0.,  5.,  8.,  0.,  0.,  9.,  8.,  0.],
       [ 0.,  4., 11.,  0.,  1., 12.,  7.,  0.],
       [ 0.,  2., 14.,  5., 10., 12.,  0.,  0.],
       [ 0.,  0.,  6., 13., 10.,  0.,  0.,  0.]])
>>> plt.matshow(digit.images[0])
>>> plt.show()

Dann erscheint der folgende Bildschirm.

スクリーンショット 2020-04-18 9.42.30.png

Originaldaten herunterladen (28 x 28 Größenangaben)

Mnist-Originaldaten finden Sie hier [http://yann.lecun.com/exdb/mnist/].

Hier ist jedoch eine Binärdatei verfügbar, die nicht unverändert verwendet werden kann.

Ich muss die Daten also zu einem Formular verarbeiten, das ich selbst verwenden kann. Wie wir weiter unten sehen werden, ist Mnist ein sehr bekannter Datensatz. Daher handelt es sich um ein Tool, das so vorbereitet ist, dass es sofort in verschiedenen Bibliotheken verwendet werden kann. es gibt.

Natürlich scheint es eine Möglichkeit zu geben, diese Binärdaten selbst wiederherzustellen, aber ich konnte ihr nicht so oft folgen, und ich dachte, es wäre eine gute Idee, einige Zeit dort zu verbringen, also werde ich diese Methode nicht ansprechen.

Download über sklearn (28 x 28 Größe)

Schauen Sie sich die Artikel im Internet an, im alten Artikel

from sklearn.datasets import fetch_mldata

Es gibt einen Artikel, der besagt, aber jetzt ist die Seite, auf die Sie zugreifen möchten, nicht verfügbar, sodass ein Fehler auftritt.

Jetzt scheint es also fetch_openml wie unten zu verwenden. (Scikit-learn (sklearn) fetch_mldata-Fehlerlösung)

Dies wird auch vom Terminal aus gestartet.

>>> import matplotlib.pyplot as plt   //Es wurde möglicherweise bereits von oben importiert, aber vorerst. Tun Sie dies, wenn Sie es noch nicht importiert haben.
>>> from sklearn.datasets import fetch_openml
>>> digits = fetch_openml(name='mnist_784', version=1)
>>> digits.data.shape
(70000, 784)
>>> plt.imshow(digits.data[0].reshape(28,28), cmap=plt.cm.gray_r)
<matplotlib.image.AxesImage object at 0x1a299dd850>
>>>>>> plt.show()

スクリーンショット 2020-04-18 10.37.11.png

Tensorflow (Größe 28 x 28)

Eingabe aus dem Tensorflow-Tutorial.

>>> from tensorflow.examples.tutorials.mnist import input_data

Es scheint, dass ich es schaffen kann, aber in meinem Fall habe ich den folgenden Fehler erhalten.

Zusammenfassend scheint es, dass der Tutorial-Ordner bei der Installation von Tensorflow möglicherweise nicht heruntergeladen werden kann.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tensorflow.examples.tutorials'

Ich habe mir den Inhalt des aktuellen Verzeichnisses angesehen.

 $ls /Users/hiroshi/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/examples/
__init__.py	__pycache__	saved_model

Es ist geworden.

Ich habe auf die folgende Seite verwiesen.

Gehen Sie zunächst zur Tensorflow-Github-Seite, laden Sie die Zip-Datei an eine beliebige Stelle herunter und entpacken Sie sie.

スクリーンショット 2020-04-18 13.58.00のコピー.png

Es gibt einen Ordner namens Tensorflow-Master, also gibt es einen Ordner namens Tutorials am Speicherort von Tensorflow-Master \ Tensorflow \ Beispiele .

Kopieren Sie diesen Ordner mit dem Namen turorials in /Users/hiroshi/opt/anaconda3/lib/python3.7/site-packages/tensorflow_core/examples/.

Wenn möglich soweit

>>> import matplotlib.pyplot as plt   //Es wurde möglicherweise bereits von oben importiert, aber vorerst. Tun Sie dies, wenn Sie es noch nicht importiert haben.
>>> from tensorflow.examples.tutorials.mnist import input_data
>>> mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
>>> im = mnist.train.images[1]
>>> im = im.reshape(-1, 28)
>>> plt.imshow(im)
<matplotlib.image.AxesImage object at 0x64a4ee450>
>>> plt.show()

In diesem Fall sollte auch das Bild angezeigt werden.

Keras (28 x 28 Größe)

>>> import matplotlib.pyplot as plt   //Es wurde möglicherweise bereits von oben importiert, aber vorerst. Tun Sie dies, wenn Sie es noch nicht importiert haben.
>>> import tensorflow as tf
>>> mnist = tf.keras.datasets.mnist
>>> mnist
>>> mnist_data = mnist.load_data()
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
>>> type(mnist_data[0])
<class 'tuple'>   //Es wird mit einem Taple zurückkommen.
>>> len(mnist_data[0])
2
>>> len(mnist_data[0][0])
60000
>>> len(mnist_data[0][0][1])
28
>>> mnist_data[0][0][1].shape
(28, 28)

>>> plt.imshow(mnist_data[0][0][1],cmap=plt.cm.gray_r)
<matplotlib.image.AxesImage object at 0x642398550>
>>> plt.show()

Ich werde das Bild nicht mehr posten, aber hoffentlich wird es wieder angezeigt.

Pytorch (28 x 28 Größe)

Zunächst scheint es, dass, wenn Sie dies nicht tun können, Sie nicht fortfahren können,

>>> from torchvision.datasets import MNIST

Ich habe den folgenden Fehler erhalten. Es scheint keine Fackelsicht zu geben.

In meinem Fall, wenn ich Pytorch in Conda stecke, habe ich gerade

conda install pytorch

Es schien, dass ich nur dorthin ging.

Es scheint wie folgt zu tun, um Zubehör einzuschließen.

conda install pytorch torchvision -c pytorch 

Sie werden zur Bestätigung aufgefordert, drücken Sie also y.

Versuchen Sie anschließend (falls erforderlich), Code ähnlich dem folgenden auszuführen.

>>> import matplotlib.pyplot as plt   //Es wurde möglicherweise bereits von oben importiert, aber vorerst. Tun Sie dies, wenn Sie es noch nicht importiert haben.


>>> import torchvision.transforms as transforms
>>> from torch.utils.data import DataLoader
>>> from torchvision.datasets import MNIST
>>> mnist_data = MNIST('~/tmp/mnist', train=True, download=True, transform=transforms.ToTensor())
>>> data_loader = DataLoader(mnist_data,batch_size=4,shuffle=False)
>>> data_iter = iter(data_loader)
>>> images, labels = data_iter.next()
>>> npimg = images[0].numpy()
>>> npimg = npimg.reshape((28, 28))
>>> plt.imshow(npimg, cmap='gray')
<matplotlib.image.AxesImage object at 0x12c841810>
>>plt.show()

Extra Edition (vom ersten Dee-Lernen)

["Deep Learning von Grund auf neu"] von O'Reilly (https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82% 89% E4% BD% 9C% E3% 82% 8BDeep-Learning-% E2% 80% 95Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82 % A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0% E3% 81% AE % E7% 90% 86% E8% AB% 96% E3% 81% A8% E5% AE% 9F% E8% A3% 85-% E6% 96% 8E% E8% 97% A4-% E5% BA% B7 % E6% AF% 85 / dp / 4873117585) erfolgt unabhängig in den in diesem Buch bereitgestellten Dateien.

Insbesondere in dem Ordner, der von der [Github-Seite der in "Deep Learning von Grund auf neu" verwendeten Dateien] heruntergeladen wurde (https://github.com/oreilly-japan/deep-learning-from-scratch) Ich werde alles lesen. (Natürlich müssen Sie Python, Numpy usw. im Voraus vorbereiten.

Folgen Sie den unteren Schritten.

Laden Sie zunächst den Ordner von der oben genannten Github-Seite herunter oder klonen Sie ihn.

Hier werden wir es herunterladen. Dann entpacken Sie es.

スクリーンショット 2020-04-18 22.56.57のコピー.png

Dadurch wird ein Ordner namens Deep-Learning-from-Scratch-Master erstellt.

** Da jedes Kapitel in Ordner unterteilt ist, möchten Sie in den Ordner dieses Kapitels wechseln und lesen. ** ** **

Der Ordner selbst stammt aus ch01, aber da Mnist-Daten in Kapitel 3 verwendet werden, werde ich sie in ch03 eingeben.

$ pwd
/Volumes/SONY_64GB/deep-learning-from-scratch-master/ch03

Python starten ...

>>> import sys,os
>>> sys.path.append(os.pardir)
>>> from dataset.mnist import load_mnist
>>> (x_train,t_train),(x_test,t_test) = load_mnist(flatten=True,normalize=False)
Downloading train-images-idx3-ubyte.gz ... 
Done
Downloading train-labels-idx1-ubyte.gz ... 
Done
Downloading t10k-images-idx3-ubyte.gz ... 
Done
Downloading t10k-labels-idx1-ubyte.gz ... 
Done
Converting train-images-idx3-ubyte.gz to NumPy Array ...
Done
Converting train-labels-idx1-ubyte.gz to NumPy Array ...
Done
Converting t10k-images-idx3-ubyte.gz to NumPy Array ...
Done
Converting t10k-labels-idx1-ubyte.gz to NumPy Array ...
Done
Creating pickle file ...
Done!
>>> print(x_train.shape)
(60000, 784)
>>> print(t_train.shape)
(60000,)
>>> print(x_test.shape)
(10000, 784)
>>> print(t_test.shape)
(10000,)
>>> 


Referenzierte Seite

Mnist Originaldaten

MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges → Eine Seite mit den Originaldaten von Mnist. Binärdaten können hier heruntergeladen werden.

sklearn

Ziffernseite der offiziellen Dokumentation von sklearn (→ Klicken Sie oben auf den Datensatz, um zu der Seite zu gelangen, auf der angezeigt wird, mit welchen anderen Datensätzen sklearn standardmäßig geliefert wird.)

Erkennen handgeschriebener Zahlen mit SVM von Scikit learn (Qiita) Scikit-learn (sklearn) fetch_mldata-Fehlerlösung (Qiita)

Verständnis der Spezifikationen von MNIST-Daten

Handschriftliche Nummerndaten verarbeiten! Verwendung von mnist mit Python [Für Anfänger]

7.5.3. Downloading datasets from the openml.org repository¶

Tensorflow

Grundlegende Verwendung von TensorFlow, Keras (Modellbau / Training / Evaluierung / Vorhersage)

ModuleNotFoundError: Kein Modul mit dem Namen'tensorflow.examples '(Stackoverflow) 5. Antwort von oben Tensorflow Github-Seite

Keras

Grundlegende Verwendung von TensorFlow, Keras (Modellbau / Training / Evaluierung / Vorhersage)

Pytorch Versuchen Sie MNIST mit PyTorch conda install pytorch torchvision -c pytorch sagt PackageNotFoundError: Abhängigkeiten fehlen in aktuellen osx-64-Kanälen: --pytorch-> mkl> = 2018

Andere

OpenML (insbesondere die Datenlistenseite) ["Deep Learning von Grund auf neu"](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD % 9C% E3% 82% 8BDeep-Learning-% E2% 80% 95Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 87% E3% 82% A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0% E3% 81% AE% E7% 90% 86% E8% AB% 96% E3% 81% A8% E5% AE% 9F% E8% A3% 85-% E6% 96% 8E% E8% 97% A4-% E5% BA% B7% E6% AF% 85 / dp / 4873117585) Github-Seite mit Dateien, die in "Deep Learning von Grund auf neu" verwendet werden

Recommended Posts

Verschiedene Möglichkeiten, Mnist zu importieren
Verschiedene Verarbeitung von Python
Verschiedene Klassenmethoden und statische Methoden
Über verschiedene Codierungen von Python 3
Ich habe verschiedene Methoden der Kommunikation zwischen Prozessen bei der Mehrfachverarbeitung von Python3 gemessen
Üben Sie typische statistische Methoden (1)
[Satzklassifikation] Ich habe verschiedene Pooling-Methoden von Convolutional Neural Networks ausprobiert
[Python] Der Stolperstein des Imports
Zusammenfassung verschiedener Operationen in Tensorflow
Informationen zum Importfehler von PyQt5.QtWidgets (Anaconda)
Datenverarbeitung 2 Analyse verschiedener Datenformate
Verschiedene Methoden zum numerischen Erstellen der Umkehrfunktion einer bestimmten Funktion Einführung