MPSYOKOHAMA 10th python-mnist, une bibliothèque de données d'apprentissage de caractères numériques manuscrites et de données d'enseignants utilisées dans l'implémentation de DNN, s'exécute dans l'environnement Windows. Je ne l'avais pas, donc un mémo quand je l'ai forcé à bouger
・ Installez python-mnist 0.3 avec pip ・ Depuis le site MINST DATABASE, train-images-idx3-ubyte.gz: train-labels-idx1-ubyte.gz: Télécharger -Créez un dossier nommé mnist dans le répertoire où python s'exécute. -Décompressez les deux fichiers ci-dessus et enregistrez-les. En d'autres termes Environnement d'exécution> mninst> train-images-idx3-ubyte> train-images.idx3-ubyte (fichier) Environnement d'exécution> mninst> train-labels-idx1-ubyte> train-labels.idx1-ubyte (fichier) J'ai fait la situation. Donc, quand j'essaye de le lire, je spécifie d'abord le dossier mnist sous l'environnement d'exécution, mais "" Ceci est \ (demi-largeur) pour Windows.
from mnist import MNIST
mndata = MNIST('.\mnist')
Et puis pour lire le fichier
train_img, train_label = mndata.load_training()
Lorsque je l'ai exécuté, il a été rejeté en raison d'un problème d'autorisation. .. .. J'ai essayé de jouer avec les autorisations de divers fichiers, mais je n'ai pas pu le résoudre.
PermissionError: [Errno 13] Permission denied: '.\\mnist\\train-labels-idx1-ubyte'
Cependant, si vous insérez directement import os et le lisez, vous pouvez accéder au fichier. Hmmm.
with open('.\mnist\\train-labels-idx1-ubyte\\train-labels.idx1-ubyte', 'rb') as f:
line = f.readline()
print(line)
>>>b'\x00\x00\x08\x01\x00\x00\xea....
Cela ne peut pas être aidé, alors chargeons-le directement en faisant référence à la bibliothèque.
C:\Python34\Lib\site-packages\mnist
En référence à loader.py ici, j'ai décidé d'écrire un code qui ne peut faire que ce dont j'ai besoin cette fois.
Je voulais vraiment utiliser quelque chose comme os.join pour le faire fonctionner dans n'importe quel emplacement de stockage, mais j'ai abandonné à cause de mon manque de capacité. Je mets un fichier directement sous mnist et je le lis. Environnement d'exécution> mninst> train-images.idx3-ubyte (fichier) Environnement d'exécution> mninst> train-labels.idx1-ubyte (fichier)
WMINST.py
# coding: utf-8
import os
import struct
from array import array
class MNIST(object):
def __init__(self):
self.train_img_fname = 'train-images-idx3-ubyte'
self.train_lbl_fname = 'train-labels-idx1-ubyte'
self.train_images = []
self.train_labels = []
def load_training(self): #Créez un dossier appelé mninst dans le dossier de travail et entraînez-vous dessus-images.idx3-ubyte,train-labels.idx1-Je mets ubyte.
ims, labels = self.load(('.\mnist\\train-images.idx3-ubyte'),
('.\mnist\\train-labels.idx1-ubyte'))
self.train_images = ims
self.train_labels = labels
return ims, labels
@classmethod
def load(cls, path_img, path_lbl):
with open(path_lbl, 'rb') as file:
magic, size = struct.unpack(">II", file.read(8))
if magic != 2049:
raise ValueError('Magic number mismatch, expected 2049,'
'got {}'.format(magic))
labels = array("B", file.read())
with open(path_img, 'rb') as file:
magic, size, rows, cols = struct.unpack(">IIII", file.read(16))
if magic != 2051:
raise ValueError('Magic number mismatch, expected 2051,'
'got {}'.format(magic))
image_data = array("B", file.read())
images = []
for i in range(size):
images.append([0] * rows * cols)
for i in range(size):
images[i][:] = image_data[i * rows * cols:(i + 1) * rows * cols]
return images, labels
J'étais accro à la spécification du chemin du fichier, comme
'. \ Mnist \ train-labels.idx1-ubyte'```, après le premier dossier mnist `\\`
Connectez-vous à deux. (``
\` ʻest \ (demi-largeur))
J'ai donné à ce fichier un nom approprié (WMINST.py), je l'ai sauvegardé dans mon répertoire de travail et l'ai chargé, et cela a fonctionné. La raison pour laquelle il devient MNIST () et non (. \ Mnist) est que je l'ai écrit pour que le chemin du fichier puisse être chargé directement.
from WMNIST import MNIST
mndata = MNIST()
train_img, train_label = mndata.load_training()
Apparemment, cela a fonctionné.