MPSYOKOHAMA 10th python-mnist, eine Bibliothek handgeschriebener numerischer Zeichentrainingsdaten und Lehrerdaten, die bei der Implementierung von DNN verwendet werden, wird in der Windows-Umgebung ausgeführt Ich hatte es nicht, also ein Memo, als ich es zwang, mich zu bewegen
・ Installieren Sie Python-Mnist 0.3 mit Pip ・ Von MINST DATABASE-Site, train-images-idx3-ubyte.gz: train-labels-idx1-ubyte.gz: herunterladen
from mnist import MNIST
mndata = MNIST('.\mnist')
Und dann die Datei lesen
train_img, train_label = mndata.load_training()
Als ich es ausführte, wurde es aufgrund eines Berechtigungsproblems abgelehnt. .. .. Ich habe versucht, mit den Berechtigungen verschiedener Dateien zu spielen, konnte es aber nicht lösen.
PermissionError: [Errno 13] Permission denied: '.\\mnist\\train-labels-idx1-ubyte'
Wenn Sie jedoch das Import-Betriebssystem direkt einfügen und lesen, können Sie auf die Datei zugreifen. 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....
Es kann nicht geholfen werden, also laden wir es direkt, während wir auf die Bibliothek verweisen.
C:\Python34\Lib\site-packages\mnist
Mit Bezug auf loader.py hier habe ich beschlossen, einen Code zu schreiben, der nur das kann, was ich diesmal brauche.
Ich wollte wirklich so etwas wie os.join verwenden, damit es an jedem Speicherort funktioniert, aber ich gab wegen meiner mangelnden Fähigkeiten auf. Ich habe eine Datei direkt unter mnist abgelegt und gelesen. Ausführungsumgebung> mninst> train-images.idx3-ubyte (Datei) Ausführungsumgebung> mninst> train-labels.idx1-ubyte (Datei)
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): #Erstellen Sie im Arbeitsordner einen Ordner namens mninst und trainieren Sie darin-images.idx3-ubyte,train-labels.idx1-Ich habe Ubyte gesetzt.
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
Ich war süchtig danach, den Dateipfad wie `. \ Mnist \\ train-labels.idx1-ubyte'``` nach dem ersten mnist-Ordner` `\\`
anzugeben Verbinde dich mit zwei. (`` \\
`ist \ (halbe Breite))
Ich gab dieser Datei einen passenden Namen (WMINST.py), speicherte sie in meinem Arbeitsverzeichnis, lud sie und es funktionierte. Der Grund, warum es zu MNIST () und nicht zu (. \ Mnist) wird, ist, dass ich es geschrieben habe, damit der Dateipfad direkt geladen werden kann.
from WMNIST import MNIST
mndata = MNIST()
train_img, train_label = mndata.load_training()
Anscheinend hat es funktioniert.
Recommended Posts