我在 colab notebook 中有以下代码块,用于从 torchvision 下载 EMNIST 数据集。有时我会随机收到一个错误提示
connectionError: HTTPConnectionPool(host='www.itl.nist.gov', port=80): Max retries exceeded with url: /iaui/vip/cs_links/EMNIST/gzip.zip (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f701d0936d0>: Failed to establish a new connection: [Errno 110] Connection timed out'))
因此,我制作了一个代码块,其中包含一个函数,如果尝试下载失败,该函数会调用自身(请参阅帖子底部)。有时下载实际上开始工作,但速度非常慢。进度条见下方截图
从屏幕截图中的 URL 下载 <1GB 的数据超过两个小时。将数据集直接下载到我的机器上大约需要 60 秒,因此提供数据的服务器没有问题。 colab 与服务器的互联网连接或 PyTorch 处理数据下载的方式似乎有问题。我真的不知道该怎么做才能解决这个问题。我多次尝试重新连接运行时,但发生了同样的问题。
数据下载代码:
from torchvision import transforms, datasets
train_data = None
test_data = None
def load_data():
global train_data, test_data
try:
train_data = datasets.EMNIST("./data", split="balanced", train=True, download=True,
transform=transforms.Compose([
transforms.ToTensor()
]))
test_data = datasets.EMNIST("./data", split="balanced", train=False, download=True,
transform=transforms.Compose([
transforms.ToTensor()
]))
except:
load_data()
load_data()
print(train_data)
print(test_data)