# coding=utf-8 # Copyright 2023 Salesforce authors, The EleutherAI, and HuggingFace Teams. All rights reserved. """ PyTorch CodeT5+ matching models. The implementation is based on transformers.models.t5.modeling_t5 by adding a projection layer on T5EncoderModel """ from typing import Optional, Tuple, Union import torch from torch import nn import torch.nn.functional as F from transformers import T5ForConditionalGeneration from transformers.modeling_outputs import ( BaseModelOutput, ) from .configuration_codet5p_bimodal import CodeT5pBimodalConfig class CodeT5pBimodalModel(T5ForConditionalGeneration): config_class = CodeT5pBimodalConfig authorized_missing_keys = [ r"encoder.embed_tokens.weight", ] def __init__(self, config: CodeT5pBimodalConfig): super().__init__(config) self.proj = nn.Linear(config.d_model, config.embed_dim) self.itm_head = nn.Linear(config.d_model, 2)