#pytorch #conv-neural-network #load #visualization #resnet
Вопрос:
В pytorch, как я могу написать код, который загружает мой файл .ckpt вместо
model = torchvision.models.resnet50(pretrained=True)
Вот моя попытка ниже
model = torchvision.models.resnet50(pretrained=False)
PATH = "/content/drive/MyDrive/Colab Notebooks/mlearning2/multi_logs/resnet_2/version_0/checkpoints/epoch=1-step=2543.ckpt"
model.load_state_dict(torch.load(PATH, map_location=torch.device('cpu')))
Но это не сработало, и появилась следующая ошибка.
RuntimeError: Error(s) in loading state_dict for ResNet:
Missing key(s) in state_dict: "conv1.weight", "bn1.weight", "bn1.bias", "bn1.running_mean", "bn1.running_var", "layer1.0.conv1.weight", "layer1.0.bn1.weight", "layer1.0.bn1.bias", "layer1.0.bn1.running_mean", "layer1.0.bn1.running_var", "layer1.0.conv2.weight", "layer1.0.bn2.weight", "layer1.0.bn2.bias", "layer1.0.bn2.running_mean", "layer1.0.bn2.running_var", "layer1.0.conv3.weight", "layer1.0.bn3.weight", "layer1.0.bn3.bias", "layer1.0.bn3.running_mean", "layer1.0.bn3.running_var", "layer1.0.downsample.0.weight", "layer1.0.downsample.1.weight", "layer1.0.downsample.1.bias", "layer1.0.downsample.1.running_mean", "layer1.0.downsample.1.running_var", "layer1.1.conv1.weight", "layer1.1.bn1.weight", "layer1.1.bn1.bias", "layer1.1.bn1.running_mean", "layer1.1.bn1.running_var", "layer1.1.conv2.weight", "layer1.1.bn2.weight", "layer1.1.bn2.bias", "layer1.1.bn2.running_mean", "layer1.1.bn2.running_var", "layer1.1.conv3.weight", "layer1.1.bn3.weight", "layer1.1.bn3.bias", "layer1.1.bn3.running_mean", "layer1.1.bn3.running_var", "layer1.2.conv1.weight", "layer1.2.bn1.weight", "layer1.2.bn1.bias", "layer1.2.bn1.running_mean", "layer1.2.bn1.running_var", "layer1.2.conv2.weight", "layer1.2.bn2.weight", "layer1.2.bn2.bias", "layer1.2.bn2.running_mean", "layer1.2.bn2.running_var", "layer1.2.conv3.weight", "layer1.2.bn3.weight", "layer1.2.bn3.bias", "layer1.2.bn3.running_mean", "layer1.2.bn3.running_var", "layer2.0.conv1.weight", "layer2.0.bn1.weight", "layer2.0.bn1.bias", "layer2.0.bn1...
Unexpected key(s) in state_dict: "epoch", "global_step", "pytorch-lightning_version", "state_dict", "callbacks", "optimizer_states", "lr_schedulers", "hparams_name", "hyper_parameters".
Как я могу это сделать?
@Шай, я пытался убежать
model.load_state_dict(torch.load(PATH, map_location=torch.device('cpu'))['state_dict'])
Ответ №1:
Сохраненная контрольная точка содержит не только снимок обученных весов модели, но и некоторую другую полезную информацию о состоянии обучения (например, состояние оптимизатора и т. Д.).
Попробуйте выбрать только соответствующую часть сохраненной контрольной точки:
model.load_state_dict(torch.load(PATH, map_location=torch.device('cpu'))['state_dict'])
Обновить
Основываясь на внесенных вами изменениях и полученной новой ошибке, похоже, что сохраненная модель такова model.backbone = torchvision.models.resnet50()
.
Вам нужно создать свой model
экземпляр таким же образом, как это делалось во время обучения.
Комментарии:
1. Спасибо, что ответили. Я попробовал, но все равно есть ошибка. Я отредактировал вопрос и поместил там ошибку
2. Спасибо вам за ваш ответ. Мое понимание еще не настолько ясно. Что я могу попытаться сделать дальше?