def create(self, patch_size=None, embed_dim=None, device="cpu", **kwargs) -> None:
        """
        Creates a convolution that mimics the embedding layer to be used for the ablation mask to
        track where the image was ablated.

        :param patch_size: The patch size used by the ViT.
        :param embed_dim: The embedding dimension used by the ViT.
        :param device: Which device to set the embedding layer to.
        :param kwargs: Handles the remaining kwargs from the ViT configuration.
        """

        if patch_size is not None:
            self.patch_size = patch_size
        if embed_dim is not None:
            self.embed_dim = embed_dim

        self.proj = torch.nn.Conv2d(
            in_channels=self.in_channels,
            out_channels=self.embed_dim,
            kernel_size=self.patch_size,
            stride=self.patch_size,
            bias=False,
        )
        w_shape = self.proj.weight.shape
        self.proj.weight = torch.nn.Parameter(torch.ones(w_shape).to(device))

        Creates a convolution that mimics the embedding layer to be used for the ablation mask to
        track where the image was ablated.

        :param patch_size: The patch size used by the ViT.
        :param embed_dim: The embedding dimension used by the ViT.
        :param device: Which device to set the embedding layer to.
        :param kwargs: Handles the remaining kwargs from the ViT configuration.
        
art/estimators/certification/derandomized_smoothing/vision_transformers/pytorch.py