D:\Work Bag\Python\lib\site-packages\torchvision\models\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead. warnings.warn( D:\Work Bag\Python\lib\site-packages\torchvision\models\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet34_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet34_Weights.DEFAULT` to get the most up-to-date weights. warnings.warn(msg) Traceback (most recent call last): File "C:/Users/29800/Desktop/rPPG-master/run.py", line 65, in <module> runPOS(source) File "C:/Users/29800/Desktop/rPPG-master/run.py", line 39, in __call__ capture = CaptureFrames(self.batch_size, source, show_mask=True) File "C:\Users\29800\Desktop\rPPG-master\capture_frames.py", line 20, in __init__ self.model.load_state_dict(torch.load('linknet.pth')) File "D:\Work Bag\Python\lib\site-packages\torch\serialization.py", line 815, in load return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args) File "D:\Work Bag\Python\lib\site-packages\torch\serialization.py", line 1033, in _legacy_load magic_number = pickle_module.load(f, **pickle_load_args) _pickle.UnpicklingError: invalid load key, 'v'.
时间: 2023-08-29 16:06:26 浏览: 1838
这个警告和错误可能是由于使用了不兼容的 pickle 版本造成的。pickle 在序列化和反序列化 Python 对象时,需要使用相同版本的 pickle。如果对象是使用不同版本的pickle进行序列化的,那么在反序列化时就会出现 _pickle.UnpicklingError 错误。
解决方法是尝试更新 pickle 版本或者使用相同版本的 pickle 进行序列化和反序列化操作。如果你使用的是 Python 3,在进行 pickle 操作时,建议使用 "pickle" 模块的 "protocol" 参数指定协议版本,例如 pickle.dump(obj, file, protocol=4),指定协议版本为 4。这样可以确保在不同 Python 版本之间进行 pickle 操作时,能够更好地兼容。
此外,第一个警告是关于 PyTorch 中的 pretrained 参数已经被弃用,建议使用 weights 参数替代;第二个警告是关于传递给函数的参数已经被弃用,建议使用更合适的参数传递方式。建议按照警告信息进行修改,以免在将来的版本中出现问题。
相关问题
C:\Program Files\Python311\Lib\site-packages\torchvision\models\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead. warnings.warn( C:\Program Files\Python311\Lib\site-packages\torchvision\models\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet50_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet50_Weights.DEFAULT` to get the most up-to-date weights. warnings.warn(msg)
这个警告信息是由 `_utils.py` 文件中的代码触发的。它指出在未来版本中,`pretrained` 参数会被弃用,建议改用 `weights` 参数。另外,除了权重枚举或 `None`,其他参数值也会在未来版本中被弃用。
根据警告信息提供的建议,您可以尝试将 `pretrained` 参数替换为 `weights` 参数,并将其设置为 `ResNet50_Weights.IMAGENET1K_V1` 或 `ResNet50_Weights.DEFAULT`。这样可以避免警告信息,并使用最新的权重。
例如:
```python
model = ResNet50(pretrained=False, weights=ResNet50_Weights.IMAGENET1K_V1)
```
请确保您的代码与 TorchVision 版本兼容,并尽量使用最新的 API。如果您仍然遇到问题,请提供更多相关的代码和报错信息,以便我能够更深入地帮助您。
在加载代码import torch import torchvision.models as models # 加载ResNet-50模型 resnet = models.resnet50(pretrained=True)时报错C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\torchvision\models\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead. warnings.warn( C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\torchvision\models\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet50_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet50_Weights.DEFAULT` to get the most up-to-date weights. warnings.warn(msg)
这个警告是由于`pretrained`参数在torchvision的0.13版本中被弃用,并在未来版本中可能被移除。取而代之的是使用`weights`参数来指定加载的预训练权重。
为了解决这个问题,你可以将代码中的`pretrained=True`改为`weights='imagenet'`,如下所示:
```python
import torch
import torchvision.models as models
# 加载ResNet-50模型
resnet = models.resnet50(weights='imagenet')
```
这样修改后,将加载与ImageNet数据集上预训练的权重。如果你想要获取最新的权重,请使用`weights='default'`。
请注意,这个警告是可忽略的,代码仍然可以正常运行。但为了避免潜在的功能变更,建议根据警告信息进行修改。
阅读全文