返回

解决PyTorch中的URLError: An existing connection was forcibly closed by the remote host

windows

如何解决PyTorch中的URLError: <urlopen error [WinError 10054] An existing connection was forcibly closed by the remote host>

在使用PyTorch时,你可能会遇到URLError: <urlopen error [WinError 10054] An existing connection was forcibly closed by the remote host>错误。此错误表示服务器强制关闭了连接,阻止了PyTorch下载预训练权重。以下步骤将指导你解决此问题:

原因:

此错误通常是由不稳定的网络连接、服务器问题或超时导致的。

解决方案:

1. 检查网络连接

  • 确保你的计算机已连接到互联网,并且防火墙或安全软件未阻止对远程服务器的连接。

2. 下载权重并手动加载

  • 访问PyTorch模型网站并手动下载预训练的权重文件。
  • 在你的代码中,将weights_path参数替换为下载的权重文件路径。

3. 修改请求超时

  • 服务器可能需要更长的时间来响应请求。通过增加timeout参数来修改HTTP请求的超时值:
import urllib.request

timeout = 60

opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)

url = 'https://download.pytorch.org/models/resnet50-0676ba61.pth'
urllib.request.urlretrieve(url, './resnet50-0676ba61.pth', timeout=timeout)

此步骤将从本地文件加载权重,而不是从远程服务器。

其他提示:

  • 使用稳定快速的互联网连接。
  • 尝试使用不同的浏览器或下载管理器下载权重文件。
  • 确保服务器没有阻止对特定IP地址或地理位置的访问。

常见问题解答:

1. 为什么我会收到此错误?

  • 不稳定的网络连接、服务器问题或超时。

2. 如何手动下载权重?

3. 如何增加请求超时?

  • 使用urllib.request模块修改HTTP请求的超时值。

4. 如何从本地文件加载权重?

  • weights_path参数替换为下载的权重文件路径。

5. 如果我仍然收到错误怎么办?

  • 联系服务器管理员以排除服务器问题。