Shortcuts

Source code for mmpretrain.models.necks.simmim_neck

# Copyright (c) OpenMMLab. All rights reserved.
import torch
import torch.nn as nn
from mmengine.model import BaseModule

from mmpretrain.registry import MODELS


[docs]@MODELS.register_module() class SimMIMLinearDecoder(BaseModule): """Linear Decoder For SimMIM pretraining. This neck reconstructs the original image from the shrunk feature map. Args: in_channels (int): Channel dimension of the feature map. encoder_stride (int): The total stride of the encoder. """ def __init__(self, in_channels: int, encoder_stride: int) -> None: super().__init__() self.decoder = nn.Sequential( nn.Conv2d( in_channels=in_channels, out_channels=encoder_stride**2 * 3, kernel_size=1), nn.PixelShuffle(encoder_stride), )
[docs] def forward(self, x: torch.Tensor) -> torch.Tensor: """Forward function.""" x = self.decoder(x) return x