pytorch pretrained model

本文介绍两种在PyTorch中加载预训练模型的方法:一种是直接比较模型大小进行加载,另一种是通过筛选预训练权重中的键来匹配模型状态字典。
部署运行你感兴趣的模型镜像

pytorch pretrained model

two methods


method 1 比较大小

self._model = models.__dict__[args.arch](pretrained = False, 
                                         num_classes = args.classes, 
                                         aux_logits = False)


if self.args.pretrained:
              
    print("=> using pre-trained model '{}'".format(args.arch))
    pretrained_state = model_zoo.load_url(model_names[args.arch])
    model_state = self._model.state_dict()

    pretrained_state = { k:v for k,v in pretrained_state.iteritems() if k in model_state and v.size() == model_state[k].size() }
    model_state.update(pretrained_state)
    self._model.load_state_dict(model_state)

method 2 比较key

given:
pretrained_dict: ['A', 'B', 'C', 'D']
model_dict: ['A', 'B', 'C', 'E']
After:
pretrained_dict: ['A', 'B', 'C']
model_dict: ['A', 'B', 'C', 'E']

pretrained_dict = ...
model_dict = model.state_dict()

# 1. filter out unnecessary keys
pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
# 2. overwrite entries in the existing state dict
model_dict.update(pretrained_dict) 
# 3. load the new state dict
model.load_state_dict(model_dict)


https://discuss.pytorch.org/t/how-to-load-part-of-pre-trained-model/1113/16

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

Python 中的 `ModuleNotFoundError: No module named 'model.PyTorch_Pretrained_ViT'; 'model' is not a package` 错误通常表示 Python 无法找到指定的模块或包。这种问题通常由以下几种原因引起: 1. **模块路径问题**:Python 解释器无法找到模块所在的目录,这可能是因为模块未安装在当前环境的 `PYTHONPATH` 中,或者文件夹结构不符合 Python 包的标准。 2. **目录结构问题**:`model` 目录缺少 `__init__.py` 文件,导致 Python 无法将其识别为一个包。 3. **模块未正确安装**:如果模块是第三方库,则可能未正确安装或安装在错误的环境中。 ### 检查与解决方案 #### 1. 确保目录结构符合 Python 包要求 如果模块位于本地文件系统中,确保模块所在的目录包含 `__init__.py` 文件。例如,目录结构应如下: ``` project_root/ │ ├── model/ │ ├── __init__.py │ └── PyTorch_Pretrained_ViT/ │ ├── __init__.py │ └── module_files.py ``` 确保 `model` 和 `PyTorch_Pretrained_ViT` 目录中都包含 `__init__.py` 文件,即使它们是空文件。这将告诉 Python 这些目录是 Python 包。 #### 2. 检查模块是否已正确安装 如果 `PyTorch_Pretrained_ViT` 是第三方库,可以尝试使用 `pip` 安装它。运行以下命令以安装模块: ```bash pip install pytorch-pretrained-vit ``` 如果模块名称不同,请查阅相关文档以获取正确的安装命令。 #### 3. 确保 Python 环境正确 有时,模块可能安装在全局环境中,而当前使用的是虚拟环境,或者反之。可以使用以下命令检查当前 Python 环境的路径: ```bash which python # Linux/macOS where python # Windows ``` 此外,可以使用以下命令查看已安装的模块: ```bash pip list ``` 确保模块出现在当前环境的已安装列表中。 #### 4. 添加模块路径到 `PYTHONPATH` 如果模块未安装,而是位于本地文件系统中,可以将模块所在目录添加到 `PYTHONPATH`。例如,在运行脚本时设置路径: ```bash PYTHONPATH=/path/to/your/module python your_script.py ``` 或者在代码中动态添加路径: ```python import sys from pathlib import Path module_path = str(Path(__file__).parent.parent) if module_path not in sys.path: sys.path.append(module_path) ``` #### 5. 使用相对导入 如果模块属于一个更大的包结构,可以尝试使用相对导入。例如: ```python from .PyTorch_Pretrained_ViT import ViTModel ``` 但请注意,相对导入仅适用于作为包运行的模块,不适用于直接执行的脚本。 #### 6. 重新安装依赖库 如果模块依赖于其他库(如 `torch` 或 `transformers`),确保这些库已正确安装并更新到最新版本: ```bash pip install --upgrade torch transformers ``` #### 7. 检查模块命名 有时模块名称可能存在拼写错误或大小写不一致的问题。确保导入语句中的名称与模块文件名完全匹配。例如: ```python import model.PyTorch_Pretrained_ViT # 确保路径和命名正确 ``` --- ### 示例代码:添加路径并导入模块 ```python import sys from pathlib import Path # 获取当前脚本所在目录的上一级目录 project_root = str(Path(__file__).parent.parent) if project_root not in sys.path: sys.path.append(project_root) # 现在可以导入本地模块 from model.PyTorch_Pretrained_ViT import ViTModel ``` --- ### 总结 解决 `ModuleNotFoundError: No module named 'model.PyTorch_Pretrained_ViT'; 'model' is not a package` 问题的关键在于确保模块路径正确、模块结构符合 Python 包规范,并且模块已正确安装或可被 Python 解释器访问。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值