2017-03-31 73 views
6

Hu chłopaki,Nie można uzyskać poprzez bazę MNIST Anaconda/jupyter

Jestem nowy python/anaconda/jupyter/NumPy Panda, etc .... więc proszę mi wybaczyć, jeśli to naprawdę głupie pytanie. Próbuję uzyskać bazę danych MNIST za pomocą anaconda/jupyter. Ale za każdym razem otrzymuję błąd HTTP 500 na końcu. Czy to naprawdę problem z serwerem (co sugerowałoby 500) czy robię coś nie tak?

Wejście w jupyter:

from sklearn.datasets import fetch_mldata 
mnist = fetch_mldata('MNIST original') 

Wynik:

--------------------------------------------------------------------------- 
    HTTPError         Traceback (most recent call last) 
    <ipython-input-1-15dc285fb373> in <module>() 
      1 from sklearn.datasets import fetch_mldata 
    ----> 2 mnist = fetch_mldata('MNIST original') 

    e:\ProgramData\Anaconda3\lib\site-packages\sklearn\datasets\mldata.py in fetch_mldata(dataname, target_name, data_name, transpose_data, data_home) 
     140   urlname = MLDATA_BASE_URL % quote(dataname) 
     141   try: 
    --> 142    mldata_url = urlopen(urlname) 
     143   except HTTPError as e: 
     144    if e.code == 404: 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 
     221  else: 
     222   opener = _opener 
    --> 223  return opener.open(url, data, timeout) 
     224 
     225 def install_opener(opener): 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout) 
     530   for processor in self.process_response.get(protocol, []): 
     531    meth = getattr(processor, meth_name) 
    --> 532    response = meth(req, response) 
     533 
     534   return response 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in http_response(self, request, response) 
     640   if not (200 <= code < 300): 
     641    response = self.parent.error(
    --> 642     'http', request, response, code, msg, hdrs) 
     643 
     644   return response 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in error(self, proto, *args) 
     562    http_err = 0 
     563   args = (dict, proto, meth_name) + args 
    --> 564   result = self._call_chain(*args) 
     565   if result: 
     566    return result 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args) 
     502   for handler in handlers: 
     503    func = getattr(handler, meth_name) 
    --> 504    result = func(*args) 
     505    if result is not None: 
     506     return result 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in http_error_302(self, req, fp, code, msg, headers) 
     754   fp.close() 
     755 
    --> 756   return self.parent.open(new, timeout=req.timeout) 
     757 
     758  http_error_301 = http_error_303 = http_error_307 = http_error_302 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in open(self, fullurl, data, timeout) 
     530   for processor in self.process_response.get(protocol, []): 
     531    meth = getattr(processor, meth_name) 
    --> 532    response = meth(req, response) 
     533 
     534   return response 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in http_response(self, request, response) 
     640   if not (200 <= code < 300): 
     641    response = self.parent.error(
    --> 642     'http', request, response, code, msg, hdrs) 
     643 
     644   return response 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in error(self, proto, *args) 
     568   if http_err: 
     569    args = (dict, 'default', 'http_error_default') + orig_args 
    --> 570    return self._call_chain(*args) 
     571 
     572 # XXX probably also want an abstract factory that knows when it makes 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args) 
     502   for handler in handlers: 
     503    func = getattr(handler, meth_name) 
    --> 504    result = func(*args) 
     505    if result is not None: 
     506     return result 

    e:\ProgramData\Anaconda3\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs) 
     648 class HTTPDefaultErrorHandler(BaseHandler): 
     649  def http_error_default(self, req, fp, code, msg, hdrs): 
    --> 650   raise HTTPError(req.full_url, code, msg, hdrs, fp) 
     651 
     652 class HTTPRedirectHandler(BaseHandler): 

    HTTPError: HTTP Error 500: INTERNAL SERVER ERROR 
+1

Komunikat o błędzie zwraca błąd HTTP 500, co oznacza wewnętrzny błąd serwera. Najprawdopodobniej wystąpił błąd na serwerze. Chciałbym spróbować później. Jeśli sprawdzisz ulr mldata.org zobaczysz, że jest on obecnie niedostępny. – pafede2

Odpowiedz

2

ja również uzyskać ten sam błąd, jak ty. Oto kilka możliwych rozwiązań, które nie wymagają tego serwera.

Jeśli masz tensorflow zainstalowany, można uzyskać dane MNIST w następujący sposób:

import tensorflow.examples.tutorials.mnist.input_data as input_data 
m=input_data.read_data_sets("MNIST") 

Wtedy na przykład len(m.train.images) jest 55000.

Jeśli nie masz tensorflow można uzyskać to zestaw danych za pomocą instrukcji here.

0

Oto alternatywna lokalizacja pobrać zestaw danych MNIST (odwołanie od https://github.com/ageron/handson-ml/blob/master/03_classification.ipynb)

from six.moves import urllib 
from sklearn.datasets import fetch_mldata 
try: 
    mnist = fetch_mldata('MNIST original') 
except urllib.error.HTTPError as ex: 
    print("Could not download MNIST data from mldata.org, trying alternative...") 

    # Alternative method to load MNIST, if mldata.org is down 
    from scipy.io import loadmat 
    mnist_alternative_url = "https://github.com/amplab/datascience-sp14/raw/master/lab7/mldata/mnist-original.mat" 
    mnist_path = "./mnist-original.mat" 
    response = urllib.request.urlopen(mnist_alternative_url) 
    with open(mnist_path, "wb") as f: 
     content = response.read() 
     f.write(content) 
    mnist_raw = loadmat(mnist_path) 
    mnist = { 
     "data": mnist_raw["data"].T, 
     "target": mnist_raw["label"][0], 
     "COL_NAMES": ["label", "data"], 
     "DESCR": "mldata.org dataset: mnist-original", 
    } 
    print("Success!") 
0

Znaleziono dobre rozwiązanie tutaj: https://github.com/Lasagne/Lasagne/blob/master/examples/mnist.py

pobiera zestaw danych ze strony internetowej Yan LeCun'S (http://yann.lecun.com/exdb/mnist/).

import os 
from urllib import urlretrieve 

def download(filename, source='http://yann.lecun.com/exdb/mnist/'): 
    print("Downloading %s" % filename) 
    urlretrieve(source + filename, filename) 

# We then define functions for loading MNIST images and labels. 
# For convenience, they also download the requested files if needed. 
import gzip 

def load_mnist_images(filename): 
    if not os.path.exists(filename): 
     download(filename) 
    # Read the inputs in Yann LeCun's binary format. 
    with gzip.open(filename, 'rb') as f: 
     data = np.frombuffer(f.read(), np.uint8, offset=16) 
    # The inputs are vectors now, we reshape them to monochrome 2D images, 
    # following the shape convention: (examples, channels, rows, columns) 
    data = data.reshape(-1, 1, 28, 28) 
    # The inputs come as bytes, we convert them to float32 in range [0,1]. 
    # (Actually to range [0, 255/256], for compatibility to the version 
    # provided at http://deeplearning.net/data/mnist/mnist.pkl.gz.) 
    return data/np.float32(256) 

def load_mnist_labels(filename): 
    if not os.path.exists(filename): 
     download(filename) 
    # Read the labels in Yann LeCun's binary format. 
    with gzip.open(filename, 'rb') as f: 
     data = np.frombuffer(f.read(), np.uint8, offset=8) 
    # The labels are vectors of integers now, that's exactly what we want. 
    return data 


X_train = load_mnist_images('train-images-idx3-ubyte.gz') 
y_train = load_mnist_labels('train-labels-idx1-ubyte.gz') 
X_test = load_mnist_images('t10k-images-idx3-ubyte.gz') 
y_test = load_mnist_labels('t10k-labels-idx1-ubyte.gz') 
2

Miałem również ten sam błąd i musiałem wyłączyć zaporę. W systemie Macbook wybierz Preferencje systemowe> Zabezpieczenia & Prywatność> Zapora> Wyłącz zaporę.

2
from sklearn.datasets import fetch_mldata 
try: 
    mnist = fetch_mldata('MNIST original') 
except Exception as ex:   
    from six.moves import urllib 
    from scipy.io import loadmat 
    import os 

    mnist_path = os.path.join(".", "datasets", "mnist-original.mat") 

    # download dataset from github. 
    mnist_alternative_url = "https://github.com/amplab/datascience-sp14/raw/master/lab7/mldata/mnist-original.mat" 
    response = urllib.request.urlopen(mnist_alternative_url) 
    with open(mnist_path, "wb") as f: 
     content = response.read() 
     f.write(content) 

    mnist_raw = loadmat(mnist_path) 
    mnist = { 
     "data": mnist_raw["data"].T, 
     "target": mnist_raw["label"][0], 
     "COL_NAMES": ["label", "data"], 
     "DESCR": "mldata.org dataset: mnist-original", 
    } 
    print("Done!") 
+0

Ta odpowiedź to cały kod. Dodaj informacje wyjaśniające i wzmacniające. –