Я столкнулся с неэтерминированным поведением при использовании модели Deeplabv3 от Pytorch с предварительно проведенными весами. Несмотря на исправление всех случайных семян, повторные выполнения по-прежнему дают разные результаты. < /P>
Код для исправления случайных семян и реализации модели следующим образом.import torch
import torch.nn as nn
import numpy as np
import random
import os
def seed_fixed(seed=2025):
random.seed(seed)
os.environ["PYTHONHASHSEED"] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed) # for multi-GPU
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
seed_fixed()
from torchvision.models.segmentation import deeplabv3_resnet50
from torchvision.models.segmentation import DeepLabV3 as DLV3
class DeepLabV3(nn.Module):
def __init__(self, in_channels=9, out_channels=1):
super().__init__()
self.in_channels = in_channels
self.out_channels = out_channels
self.model = deeplabv3_resnet50(pretrained=True)
self.model: DLV3
def process_model(self):
self.model.backbone.conv1 = nn.Conv2d(
self.in_channels, 64, kernel_size=7, stride=2, padding=3, bias=False
)
self.model.classifier[-1] = nn.Conv2d(
256, self.out_channels, kernel_size=1, stride=1
)
self.model.aux_classifier[-1] = nn.Conv2d(
256, self.out_channels, kernel_size=1, stride=1
)
def freeze(self, flag=True):
if flag:
self.model.requires_grad_(False)
self.model.backbone.conv1.requires_grad_(True)
self.model.classifier[-1].requires_grad_(True)
self.model.aux_classifier[-1].requires_grad_(True)
else:
self.model.requires_grad_(True)
def forward(self, input):
if self.training:
return self.model(input)
else:
return self.model(input)["out"]
if __name__ == "__main__":
pass
< /code>
При обучении с фиксированными случайными семенами я могу воспроизводить результаты, используя другие модели (например, UNET и FCN), но с DeepLabv3 я получаю противоречивые результаты между прогонами. < /p>
. Torchvision 0.12.0 + Numpy 1,24,3
Подробнее здесь: https://stackoverflow.com/questions/795 ... ndom-seeds
Несоответствующие результаты с моделью Pytorch DeepLabv3 даже после фиксации случайных семян ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение