簡體   English   中英

HTTP 嘗試下載 MNIST 數據時出錯

[英]HTTP Error when trying to download MNIST data

我正在使用 Google Colab 使用 Python3 和 PyTorch 1.8 在 MNIST 上訓練 LeNet-300-100 全連接神經網絡。

為了應用轉換並下載 MNIST 數據集,正在使用以下代碼:

# MNIST dataset statistics:
# mean = tensor([0.1307]) & std dev = tensor([0.3081])
mean = np.array([0.1307])
std_dev = np.array([0.3081])

transforms_apply = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize(mean = mean, std = std_dev)
    ])

這給出了錯誤:

下載http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz到./data/MNIST/raw/train-images-idx3-ubyte.gz -------- -------------------------------------------------- ----------------- HTTPError Traceback (last last call last) in () 2 train_dataset = torchvision.datasets.MNIST( 3 root = './data', train = True, ----> 4 變換 = transforms_apply,下載 = True 5 ) 6

11 幀 /usr/lib/python3.7/urllib/request.py 在 http_error_default(self, req, fp, code, msg, hdrs) 647 class HTTPDefaultErrorHandler(BaseHandler): 648 def http_error_default(self, req, fp, code, msg, hdrs): --> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp) 650 651 class HTTPRedirectHandler(BaseHandler):

HTTPError:HTTP 錯誤 503:服務不可用

怎么了?

我遇到了同樣的 503 錯誤,這對我有用

!wget www.di.ens.fr/~lelarge/MNIST.tar.gz
!tar -zxvf MNIST.tar.gz

from torchvision.datasets import MNIST
from torchvision import transforms

train_set = MNIST('./', download=True,
transform=transforms.Compose([
transforms.ToTensor(),
]), train=True)


test_set = MNIST('./', download=True,
transform=transforms.Compose([
transforms.ToTensor(),
]), train=False)

托管在http://yann.lecun.com/exdb/mnist/上的 MNIST 存在很多問題,因此 pytorch 獲得了許可,現在將其托管在亞馬遜 AWS 上。

不幸的是,該修復僅在夜間構建中可用( 在這里您可以找到修復的代碼。)

我發現有用的熱修復是:

from torchvision import datasets
new_mirror = 'https://ossci-datasets.s3.amazonaws.com/mnist'
datasets.MNIST.resources = [
   ('/'.join([new_mirror, url.split('/')[-1]]), md5)
   for url, md5 in datasets.MNIST.resources
]
train_dataset = datasets.MNIST(
   "../data", train=True, download=True, transform=transform
)

更新:根據torch vision issue 3549 ,這將在下一個小版本中修復

這個問題已經在torchvision==0.9.1中根據this解決了。 作為臨時解決方案,請使用以下解決方法:

from torchvision import datasets, transforms
datasets.MNIST.resources = [
    ('https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz', 'f68b3c2dcbeaaa9fbdd348bbdeb94873'),
    ('https://ossci-datasets.s3.amazonaws.com/mnist/train-labels-idx1-ubyte.gz', 'd53e105ee54ea40749a09fcbcd1e9432'),
    ('https://ossci-datasets.s3.amazonaws.com/mnist/t10k-images-idx3-ubyte.gz', '9fb629c4189551a2d022fa330f9573f3'),
    ('https://ossci-datasets.s3.amazonaws.com/mnist/t10k-labels-idx1-ubyte.gz', 'ec29112dd5afa0611ce80d1b7f02629c')
]

# AND the rest of your code as usual for train and test (EXAMPLE):
batch_sz = 100
tr_ = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
# MNIST
train_dataset = datasets.MNIST(
    root='./dataset', 
    train=True, 
    transform=tr_,  
    download=True
)

test_dataset = datasets.MNIST(
    root='./dataset', 
    train=False, 
    transform=tr_  
)
# DataLoader
train_loader = torch.utils.data.DataLoader(
    dataset=train_dataset,
    batch_size=batch_sz,
    shuffle=True 
)

test_loader = torch.utils.data.DataLoader(
    dataset=test_dataset,
    batch_size=batch_sz,
    shuffle=False 
)

你可以試試這個:

from sklearn.datasets import fetch_openml
mnist = fetch_openml('mnist_784', data_home=".")

x = mnist.data
x = x.reshape((-1, 28, 28))
x = x.astype('float32')

y = mnist.target
y = y.astype('float32')
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

用那個

你沒有做錯什么。 這是托管數據的平台的問題。 使用 Pytorch 您可以使用以下代碼下載 MNIST

import torch
import torchvision
from torchvision.datasets import MNIST

# Download training dataset
dataset = MNIST(root='data/', download=True)

Pytorch 數據集中的上述 MNIST 包裝器將嘗試許多可能的數據可用位置。 運行代碼后,您可以看到它首先嘗試從 Yan Le Cun 站點下載,但無法從那里下載並退回到其他可能的選項。

潛在原因:嚴樂村站點缺少更新的 SSL 證書,因此某些下載文件的方法確實考慮了此安全措施,而有些則沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM