【问题标题】:How to fix "ConnectionResetError: [Errno 104] Connection reset by peer" error?如何修复“ConnectionResetError: [Errno 104] Connection reset by peer”错误?
【发布时间】:2020-01-15 10:58:11
【问题描述】:

我正在尝试在 google colaboratory 的 GPU 上下载 MNIST 数据集。但它向我显示“ConnectionResetError: [Errno 104] Connection reset by peer”错误消息。

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

我得到以下错误:

/usr/local/lib/python3.6/dist-packages/sklearn/utils/deprecation.py:85: DeprecationWarning: Function fetch_mldata is deprecated; fetch_mldata was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml.
  warnings.warn(msg, category=DeprecationWarning)
/usr/local/lib/python3.6/dist-packages/sklearn/utils/deprecation.py:85: DeprecationWarning: Function mldata_filename is deprecated; mldata_filename was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml.
  warnings.warn(msg, category=DeprecationWarning)
---------------------------------------------------------------------------
ConnectionResetError                      Traceback (most recent call last)
<ipython-input-8-8ae517e9a088> in <module>()
      1 from sklearn.datasets import fetch_mldata
----> 2 dataset = fetch_mldata('MNIST original')
      3 data = dataset.data

11 frames
/usr/lib/python3.6/socket.py in readinto(self, b)
    584         while True:
    585             try:
--> 586                 return self._sock.recv_into(b)
    587             except timeout:
    588                 self._timeout_occurred = True

ConnectionResetError: [Errno 104] Connection reset by peer

显示此错误消息的时间过长。如何解决?

【问题讨论】:

    标签: python scikit-learn google-colaboratory mnist


    【解决方案1】:

    看看这个回复,很像SO answer

    但是,您可以简单地将 dataset = fetch_mldata('MNIST original') 包装在 try-except 块中。

    try:
         dataset = fetch_mldata('MNIST original')
    except ConnectionResetError as exc:
         print('Oh no, conection error', str(exc))
         raise
    

    这将捕获异常,打印一条语句,然后重新引发原始异常。

    这是引发的异常socket.py 您可以尝试使用更大的超时值调用socket.settimeout,以使您的请求有时间完成。需要明确的是,这将使异常出现的时间更长(在下面的代码中为 60 秒)。如果仍然出现,则可能是您的网络存在导致断开连接的问题。

    from sklearn.datasets import fetch_mldata
    import socket
    
    socket.settimeout(60) # sets the socket timeout to 60 seconds.
    dataset = fetch_mldata('MNIST original')
    data = dataset.data
    

    另一个警告,请查看您提供的错误响应的第一行。

    /usr/local/lib/python3.6/dist-packages/sklearn/utils/deprecation.py:85: DeprecationWarning: Function fetch_mldata is deprecated; fetch_mldata was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml.
    

    warnings.warn(msg, category=DeprecationWarning)

    您可能想尝试使用fetch_openml,因为fetch_mldata 已被弃用。

    【讨论】:

      【解决方案2】:

      MNIST 数据集已从 sklearn 中删除。这就是我面临这个问题的原因。以下是加载 MNIST 数据的替代解决方案:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 2019-04-30
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-18
        相关资源
        最近更新 更多