keras mnist.load_data() 超慢并在一段时间后抛出错误

keras mnist.load_data() is superslow and throw an error after some times

这是我使用的全部代码

import os
import numpy as np
import matplotlib.pyplot as plt
from tqdm import tqdm


from keras.layers import Input
from keras.models import Model, Sequential
from keras.layers.core import Dense, Dropout
from keras.layers.advanced_activations import LeakyReLU
from keras.datasets import mnist
from keras.optimizers import Adam
from keras import initializers

os.environ["KERAS_BACKEND"] = "tensorflow"

np.random.seed(10)

random_dim = 100

def load_mnist_data():
    # load the data
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    # normalize our inputs to be in the range[-1, 1]
    x_train = (x_train.astype(np.float32) - 127.5)/127.5
    print(x_train.shape)
    # convert x_train with a shape of (60000, 28, 28) to (60000, 784) so we have
    # 784 columns per row
    x_train = x_train.reshape(60000, 784)
    return (x_train, y_train, x_test, y_test)


load_mnist_data()

下载一半大约需要 30 分钟,一段时间后(大约 5000000/11490434 和 6000000/11490434)它崩溃并抛出此错误:

ConnectionResetError: [WinError 10054] Une connexion existante a dû être fermée par l’hôte distant

(翻译)

An existing connexion has been closed by the distant host

这是什么原因造成的?用 keras 下载 mnist 数据需要一个小时,而当我从 tensorflow 下载它只需要几分钟,这是否正常?

我在评论中写了我是如何解决这个问题的,但我想让它更清楚。

只有当程序从空闲状态启动并且您是第一次从 keras 导入 mnist 数据时才会出现此问题。

简单的解决方案是从命令提示符下简单地启动您的程序,似乎空闲无法处理打印那么多东西,而在空闲时打印一些东西实际上会使您的程序停止一小段时间,这可以解释下载它的时间太荒谬了。

TLDR:从命令提示符启动程序