首页 > 解决方案 > tfds.load() 给出 ConnectionResetError

问题描述

我在 Mac 上的 conda 虚拟环境中运行 tensorflow 2.0.0 (python 3.7.4)。我正在尝试通过以下命令获取 IMDb 数据集:

import tensorflow_datasets as tfds

tfds.load('imdb_reviews/subwords8k', split=(tfds.Split.TRAIN, tfds.Split.TEST), with_info = True, as_supervised = True)

我收到以下错误:

ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

我已经询问了 github tensorflow 支持(此处:tensorflow/tensorflow#36561),他们得出的结论是该问题是由 getresponse() 方法引发的,而不是 TF 问题。

他们显示了一个类似的涉及请求库的 stackoverflow 错误。它是通过安装安全包解决的。我已经使用以下命令为 Requests、Tensorflow 和 Tensorflow-Datasets 安装了安全包:

conda install -c anaconda pyasn1 ndg-httpsclient pyopenssl

conda install -c anaconda“请求[安全]”

conda install -c anaconda“张量流[安全]”

conda install -c anaconda“张量流数据集[安全]”

但问题一直存在。

他们建议联系 github Requests 支持,我这样做了(这里:https ://github.com/psf/requests/issues/5374 ),他们得出的结论是异常是由于远程服务器重置连接而他们不是确定为什么,因为请求不是问题。堆栈跟踪是:

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 672 行,在 urlopen chunked=chunked,

_make_request Six.raise_from(e, None) 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 421 行

文件“”,第 3 行,在 raise_from

_make_request httplib_response = conn.getresponse() 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 416 行

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 1344 行,在 getresponse response.begin()

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 306 行,开始版本,状态,原因 = self._read_status()

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 267 行,在 _read_status 行 = str(self.fp.readline(_MAXLINE + 1),“iso-8859 -1")

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/socket.py”,第 589 行,在 readinto 中返回 self._sock.recv_into(b)

ConnectionResetError:[Errno 54] 对等方重置连接

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次通话最后):

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/requests/adapters.py”,第 449 行,发送超时=超时

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 720 行,在 urlopen 方法中,url,error=e,_pool=self,_stacktrace=sys .exc_info()[2]

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/util/retry.py”,第 400 行,增量 raise Six.reraise(type(error), error, _stacktrace )

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/packages/six.py”,第 734 行,在 reraise raise value.with_traceback(tb)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 672 行,在 urlopen chunked=chunked,

_make_request Six.raise_from(e, None) 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 421 行

文件“”,第 3 行,在 raise_from

_make_request httplib_response = conn.getresponse() 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/urllib3/connectionpool.py”,第 416 行

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 1344 行,在 getresponse response.begin()

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 306 行,开始版本,状态,原因 = self._read_status()

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/http/client.py”,第 267 行,在 _read_status 行 = str(self.fp.readline(_MAXLINE + 1),“iso-8859 -1")

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/socket.py”,第 589 行,在 readinto 中返回 self._sock.recv_into(b)

ProtocolError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次通话最后):

文件“/Users/User/nlp1.py”,第 13 行,在 (train_data, test_data), info = tfds.load('imdb_reviews/subwords8k', split=(tfds.Split.TRAIN, tfds.Split.TEST), with_info = True, as_supervised = True)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/api_utils.py”,第 52 行,disallow_positional_args_dec return fn(*args, **kwargs)

加载 dbuilder.download_and_prepare(**download_and_prepare_kwargs) 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/registered.py”,第 300 行

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/api_utils.py”,第 52 行,disallow_positional_args_dec return fn(*args, **kwargs)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/dataset_builder.py”,第 287 行,在 download_and_prepare download_config=download_config)

_download_and_prepare max_examples_per_split=download_config.max_examples_per_split 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/dataset_builder.py”,第 948 行,

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/dataset_builder.py”,第804行,_download_and_prepare for split_generators in self._split_generators(dl_manager):

_split_generators arch_path = dl_manager.download(_DOWNLOAD_URL) 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/text/imdb.py”,第 129 行

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/download/download_manager.py”,第 301 行,下载返回 _map_promise(self._download, url_or_urls)

_map_promise res = utils.map_nested(_wait_on_promise, all_promises) 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/download/download_manager.py”,第 395 行

map_nested 返回函数(data_struct)中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/utils/py_utils.py”,第 143 行

_wait_on_promise 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/download/download_manager.py”,第 379 行,返回 p.get()

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/promise/promise.py”,第 510 行,在 get return self._target_settled_value(_raise=True)

_target_settled_value 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/promise/promise.py”,第 514 行 return self._target()._settled_value(_raise)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/promise/promise.py”,第 224 行,在 _settled_value reraise(type(raise_val), raise_val, self._traceback)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/six.py”,第 703 行,在 reraise raise value

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/promise/promise.py”,第 842 行,在 handle_future_result resolve(future.result())

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/concurrent/futures/_base.py”,第 428 行,结果返回 self.__get_result()

__get_result 中的文件“/Users/User/anaconda3/envs/tf/lib/python3.7/concurrent/futures/_base.py”,第 384 行引发 self._exception

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/concurrent/futures/thread.py”,第 57 行,运行结果 = self.fn(*self.args, **self.kwargs)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/tensorflow_datasets/core/download/downloader.py”,第 231 行,在 _sync_download response = session.get(url, stream=True )

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/requests/sessions.py”,第 546 行,在 get return self.request('GET', url, **kwargs)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/requests/sessions.py”,第 533 行,在请求 resp = self.send(prep, **send_kwargs)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/requests/sessions.py”,第 646 行,发送 r = adapter.send(request, **kwargs)

文件“/Users/User/anaconda3/envs/tf/lib/python3.7/site-packages/requests/adapters.py”,第 498 行,在发送中引发 ConnectionError(err, request=request)

ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))

我无法在任何地方找到有关此问题的任何支持。

标签: pythontensorflowconnectionremote-servertensorflow-datasets

解决方案


推荐阅读