Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 11 additions & 58 deletions src/transformers/models/dpr/modeling_dpr.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from ...utils import (
ModelOutput,
auto_docstring,
can_return_tuple,
logging,
)
from ..bert.modeling_bert import BertModel
Expand Down Expand Up @@ -118,35 +119,28 @@ def __init__(self, config: DPRConfig):
# Initialize weights and apply final processing
self.post_init()

@can_return_tuple
def forward(
self,
input_ids: Tensor,
attention_mask: Tensor | None = None,
token_type_ids: Tensor | None = None,
inputs_embeds: Tensor | None = None,
output_attentions: bool = False,
output_hidden_states: bool = False,
return_dict: bool = False,
**kwargs,
) -> BaseModelOutputWithPooling | tuple[Tensor, ...]:
outputs = self.bert_model(
input_ids=input_ids,
attention_mask=attention_mask,
token_type_ids=token_type_ids,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
**kwargs,
)
sequence_output = outputs[0]
pooled_output = sequence_output[:, 0, :]

if self.projection_dim > 0:
pooled_output = self.encode_proj(pooled_output)

if not return_dict:
return (sequence_output, pooled_output) + outputs[2:]

return BaseModelOutputWithPooling(
last_hidden_state=sequence_output,
pooler_output=pooled_output,
Expand All @@ -172,14 +166,12 @@ def __init__(self, config: DPRConfig):
# Initialize weights and apply final processing
self.post_init()

@can_return_tuple
def forward(
self,
input_ids: Tensor,
attention_mask: Tensor,
inputs_embeds: Tensor | None = None,
output_attentions: bool = False,
output_hidden_states: bool = False,
return_dict: bool = False,
**kwargs,
) -> DPRReaderOutput | tuple[Tensor, ...]:
# notations: N - number of questions in a batch, M - number of passages per questions, L - sequence length
Expand All @@ -189,9 +181,7 @@ def forward(
input_ids,
attention_mask=attention_mask,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
**kwargs,
)
sequence_output = outputs[0]

Expand All @@ -207,9 +197,6 @@ def forward(
end_logits = end_logits.view(n_passages, sequence_length)
relevance_logits = relevance_logits.view(n_passages)

if not return_dict:
return (start_logits, end_logits, relevance_logits) + outputs[2:]

return DPRReaderOutput(
start_logits=start_logits,
end_logits=end_logits,
Expand Down Expand Up @@ -272,16 +259,14 @@ def __init__(self, config: DPRConfig):
# Initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
input_ids: Tensor | None = None,
attention_mask: Tensor | None = None,
token_type_ids: Tensor | None = None,
inputs_embeds: Tensor | None = None,
output_attentions: bool | None = None,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> DPRContextEncoderOutput | tuple[Tensor, ...]:
r"""
Expand Down Expand Up @@ -322,12 +307,6 @@ def forward(
>>> embeddings = model(input_ids).pooler_output
```"""

output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
output_hidden_states = (
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
)
return_dict = return_dict if return_dict is not None else self.config.use_return_dict

if input_ids is not None and inputs_embeds is not None:
raise ValueError("You cannot specify both input_ids and inputs_embeds at the same time")
elif input_ids is not None:
Expand All @@ -353,13 +332,9 @@ def forward(
attention_mask=attention_mask,
token_type_ids=token_type_ids,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
**kwargs,
)

if not return_dict:
return outputs[1:]
return DPRContextEncoderOutput(
pooler_output=outputs.pooler_output, hidden_states=outputs.hidden_states, attentions=outputs.attentions
)
Expand All @@ -378,16 +353,14 @@ def __init__(self, config: DPRConfig):
# Initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
input_ids: Tensor | None = None,
attention_mask: Tensor | None = None,
token_type_ids: Tensor | None = None,
inputs_embeds: Tensor | None = None,
output_attentions: bool | None = None,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> DPRQuestionEncoderOutput | tuple[Tensor, ...]:
r"""
Expand Down Expand Up @@ -428,12 +401,6 @@ def forward(
>>> embeddings = model(input_ids).pooler_output
```
"""
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
output_hidden_states = (
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
)
return_dict = return_dict if return_dict is not None else self.config.use_return_dict

if input_ids is not None and inputs_embeds is not None:
raise ValueError("You cannot specify both input_ids and inputs_embeds at the same time")
elif input_ids is not None:
Expand All @@ -460,13 +427,9 @@ def forward(
attention_mask=attention_mask,
token_type_ids=token_type_ids,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
**kwargs,
)

if not return_dict:
return outputs[1:]
return DPRQuestionEncoderOutput(
pooler_output=outputs.pooler_output, hidden_states=outputs.hidden_states, attentions=outputs.attentions
)
Expand All @@ -485,15 +448,13 @@ def __init__(self, config: DPRConfig):
# Initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
input_ids: Tensor | None = None,
attention_mask: Tensor | None = None,
inputs_embeds: Tensor | None = None,
output_attentions: bool | None = None,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> DPRReaderOutput | tuple[Tensor, ...]:
r"""
Expand Down Expand Up @@ -534,12 +495,6 @@ def forward(
>>> relevance_logits = outputs.relevance_logits
```
"""
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
output_hidden_states = (
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
)
return_dict = return_dict if return_dict is not None else self.config.use_return_dict

if input_ids is not None and inputs_embeds is not None:
raise ValueError("You cannot specify both input_ids and inputs_embeds at the same time")
elif input_ids is not None:
Expand All @@ -559,9 +514,7 @@ def forward(
input_ids,
attention_mask,
inputs_embeds=inputs_embeds,
output_attentions=output_attentions,
output_hidden_states=output_hidden_states,
return_dict=return_dict,
**kwargs,
)


Expand Down