Ошибка при загрузке MNIST в Jupyter - & gt; ConnectionResetError: [Errno 104] Сброс соединения с помощью сверстника [дубликат]

Исключение фактически не вызывается конструктором суперкласса; он (или, по крайней мере, объявляется потенциально брошенным), вызывается URI.toURL(), который вы вызываете в свой аргумент в конструктор суперкласса.

Один из вариантов - написать статический метод для преобразования этого исключения в непроверенный:

private static URL convertFileToURL(File file) {
    try {
        return file.toURI().toURL();
    } catch (MalformedURLException e) {
        throw new RuntimeException("Unable to convert file to URL", e);
    }
}

Затем:

private loader(ClassLoader paramClassLoader, File paramFile){   
    super(new URL[] { convertFileToURL(paramFile) }, paramClassLoader);

    if (paramClassLoader == null)
        throw new IllegalArgumentException("Error loading class");
}

Это предполагает, что вы рассматриваете это как нечто, чего в принципе не может быть, или на что вы не хотите, чтобы звонящие заботились о них. Я не знаю достаточно о URI.toURL, чтобы узнать, действительно ли это в отношении URI на основе файлов.

Если вызывающие должны заботиться, потому что это может произойти в реальной жизни, и они должны иметь дело с этим (что я считаю маловероятным, если честно), вы должны просто заявить, что ваш конструктор может исключить исключение.

В качестве стороннего, пожалуйста, переименуйте свой класс в что-то более значимое, которое следует за соглашениями об именах Java.

0
задан Piotrek 12 July 2018 в 09:11
поделиться

1 ответ

fetch_mldata будет по умолчанию проверять данные в `` ~ / scikit_learn_data / mldata ', чтобы узнать, загружен ли набор данных или нет.

Согласно исходному коду

    # if the file does not exist, download it
    if not exists(filename):
        urlname = MLDATA_BASE_URL % quote(dataname)

Итак, в вашем случае он проверит местоположение

~/scikit_learn_data/mldata/mnist-original.mat

, и если он не найден, он будет загружен из

http://mldata.org/repository/data/download/matlab/mnist-original.mat

, который в настоящее время не работает, как вы подозревали.

Итак, что вы можете сделать, это загрузить набор данных из любого другого местоположения, подобного этому:

https://github.com/amplab/datascience-sp14/blob/master/lab7/mldata/mnist-original.mat

и сохранить это в указанной выше папке.

После этого при запуске fetch_mldata() он должен выбрать загруженный набор данных без подключения mldata.org.

Обновление:

Здесь ~ относится к домашняя папка пользователя. Вы можете использовать следующий код, чтобы узнать местоположение по умолчанию этой папки в соответствии с вашей системой.

from sklearn.datasets import get_data_home
print(get_data_home())
0
ответ дан Vivek Kumar 16 August 2018 в 00:58
поделиться
  • 1
    что означает ~/ в файлах? ~/scikit_learn_data/mldata/mnist-original.mat указывает на папку scikit_learn_data внутри моей папки проекта (и которая находится рядом с исполняемым файлом python?) – Piotrek 12 July 2018 в 11:40
  • 2
    @Piotrek No. ~ означает путь к домашней папке. Вы используете окна или Linux? – Vivek Kumar 12 July 2018 в 12:44
  • 3
    Я использую окна – Piotrek 12 July 2018 в 13:10
  • 4
    @Piotrek Я отредактировал ответ, пожалуйста, посмотрите – Vivek Kumar 12 July 2018 в 13:36
  • 5
Другие вопросы по тегам:

Похожие вопросы: