E:\Anaconda3\python.exe E:/Anaconda3/CNN/t-sne_CNN.py Traceback (most recent call last): File "E:\Anaconda3\CNN\t-sne_CNN.py", line 22, in <module> model = torch.load('./save_fig_model/model/CNN_CWRU20(10).pt') File "E:\Anaconda3\lib\site-packages\torch\serialization.py", line 791, in load with _open_file_like(f, 'rb') as opened_file: File "E:\Anaconda3\lib\site-packages\torch\serialization.py", line 271, in _open_file_like return _open_file(name_or_buffer, mode) File "E:\Anaconda3\lib\site-packages\torch\serialization.py", line 252, in __init__ super().__init__(open(name, mode)) FileNotFoundError: [Errno 2] No such file or directory: './save_fig_model/model/CNN_CWRU20(10).pt' 进程已结束,退出代码1
时间: 2025-06-20 08:19:37 浏览: 17
<think>好的,我需要解决用户在PyTorch中加载模型时遇到的FileNotFoundError问题。根据用户提供的引用信息,有几个可能的原因和解决方法。
首先,用户提到引用[3]中的情况,主程序与模型文件的相对路径发生变化,导致无法找到.pth文件。我应该先检查文件路径是否正确,确保路径是绝对路径或者正确的相对路径。同时,使用os.path.exists()来验证路径是否存在是个好方法。
然后,引用[2]中提到用户之前因为文件后缀问题(如.png和.jpg)导致找不到文件,所以需要确认模型文件的后缀是否正确,比如是.pth还是其他扩展名。同时,还要检查是否有拼写错误或大小写不一致的问题,这在不同的操作系统中可能会有影响。
接下来,引用[1]指出可能存在torch版本兼容性问题,建议在保存模型时使用_use_new_zipfile_serialization=False参数。如果用户使用的是旧版本PyTorch,加载新版本保存的模型可能会有问题,因此需要确认版本是否匹配,必要时升级或降级版本。
另外,用户权限问题也可能导致无法访问文件,需要检查文件是否有读取权限。如果模型文件被其他程序占用,也可能出现错误,所以需要确保文件未被占用。
最后,如果以上步骤都无法解决,可能需要检查文件是否真的存在,或者是否被误删、移动。同时,提供代码示例来演示正确的加载方式会有帮助,比如使用绝对路径和检查路径是否存在。
在生成相关问题的时候,要考虑用户可能遇到的类似问题,比如路径错误、版本兼容性、文件格式、权限问题等,这些都是常见的导致FileNotFoundError的原因,所以相关问题应该围绕这些方面展开。</think>### 解决PyTorch加载模型时出现的FileNotFoundError问题
#### 1. **检查文件路径的正确性**
- **绝对路径 vs 相对路径**:确保`torch.load()`中指定的路径是绝对路径(如`C:/models/epoch1.pth`)或相对于当前运行脚本的相对路径。若路径层级错误,会导致文件无法定位[^3]。
- **验证路径是否存在**:使用以下代码检查文件是否存在:
```python
import os
path = "checkpoints/Epoch99.pth"
if os.path.exists(path):
model = torch.load(path)
else:
print("文件不存在!")
```
#### 2. **检查文件后缀与命名**
- **后缀一致性**:确认保存的模型文件扩展名(如`.pth`)与加载时指定的后缀一致。例如,若文件实际为`Epoch99.pt`,但代码中写为`.pth`,则会报错。
- **避免特殊字符**:文件名中避免使用空格或特殊符号(如`#`, `%`),可能引发解析错误。
#### 3. **解决版本兼容性问题**
- **保存模型时指定参数**:若使用旧版PyTorch(如1.6以下),在保存模型时添加参数`_use_new_zipfile_serialization=False`:
```python
torch.save(model.state_dict(), "model.pth", _use_new_zipfile_serialization=False)
```
- **升级PyTorch版本**:若问题由版本不兼容导致,可通过`pip install torch --upgrade`更新到最新版本[^1]。
#### 4. **检查文件权限与占用**
- **文件权限**:确保当前用户对模型文件有读取权限(Linux/Mac系统可通过`chmod`修改权限)。
- **文件是否被占用**:若文件被其他程序打开(如编辑器),可能导致加载失败。
#### 5. **其他可能原因**
- **数据集路径问题**:类似引用[2]中提到的图片后缀问题(如`.jpg` vs `.png`),需确认模型文件实际存储格式是否与代码一致。
- **环境路径配置**:若在分布式训练或容器中运行,需确保路径在环境中可访问。
---
### 示例代码
```python
import torch
import os
# 使用绝对路径并检查文件是否存在
model_path = "C:/project/checkpoints/Epoch99.pth"
if os.path.exists(model_path):
model = torch.load(model_path)
else:
raise FileNotFoundError(f"{model_path} 不存在!")
```
---
阅读全文
相关推荐










