小编lor*_*r x的帖子

如何使用 Pytorch 中的预训练权重修改具有 4 个通道作为输入的 resnet 50?

我想更改 resnet50,以便可以切换到 4 通道输入,对 RGB 通道使用相同的权重,并使用均值 0 和方差 0.01 的法线初始化最后一个通道。

这是我的代码:

import torch.nn as nn
import torch
from torchvision import models

from misc.layer import Conv2d, FC

import torch.nn.functional as F
from misc.utils import *

import pdb

class Res50(nn.Module):
    def __init__(self,  pretrained=True):
        super(Res50, self).__init__()

        self.de_pred = nn.Sequential(Conv2d(1024, 128, 1, same_padding=True, NL='relu'),
                                     Conv2d(128, 1, 1, same_padding=True, NL='relu'))
        
        self._initialize_weights()

        res = models.resnet50(pretrained=pretrained)
        pretrained_weights = res.conv1.weight

        res.conv1 = nn.Conv2d(4, 64, kernel_size=7, stride=2, padding=3,bias=False)

        res.conv1.weight[:,:3,:,:] = pretrained_weights
        res.conv1.weight[:,3,:,:].data.normal_(0.0, std=0.01)
        
        self.frontend = nn.Sequential(
            res.conv1, res.bn1, res.relu, …
Run Code Online (Sandbox Code Playgroud)

python image-processing computer-vision deep-learning pytorch

12
推荐指数
2
解决办法
9952
查看次数