我想更改 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