Skip to content
Closed
Show file tree
Hide file tree
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
37 changes: 12 additions & 25 deletions src/transformers/models/regnet/modeling_regnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
ImageClassifierOutputWithNoAttention,
)
from ...modeling_utils import PreTrainedModel
from ...utils import auto_docstring, logging
from ...utils import auto_docstring, can_return_tuple, logging
from ...utils.output_capturing import capture_outputs
from .configuration_regnet import RegNetConfig


Expand Down Expand Up @@ -261,6 +262,7 @@ class RegNetPreTrainedModel(PreTrainedModel):
base_model_prefix = "regnet"
main_input_name = "pixel_values"
_no_split_modules = ["RegNetYLayer"]
_can_record_outputs = {"hidden_states": RegNetStage}

@torch.no_grad()
def _init_weights(self, module):
Expand Down Expand Up @@ -294,36 +296,24 @@ def __init__(self, config):
# Initialize weights and apply final processing
self.post_init()

@capture_outputs
@auto_docstring
def forward(
self,
pixel_values: Tensor,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> BaseModelOutputWithPoolingAndNoAttention:
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

embedding_output = self.embedder(pixel_values)

encoder_outputs = self.encoder(
embedding_output, output_hidden_states=output_hidden_states, return_dict=return_dict
)
encoder_outputs = self.encoder(embedding_output, return_dict=True)

last_hidden_state = encoder_outputs[0]
last_hidden_state = encoder_outputs.last_hidden_state

pooled_output = self.pooler(last_hidden_state)

if not return_dict:
return (last_hidden_state, pooled_output) + encoder_outputs[1:]

return BaseModelOutputWithPoolingAndNoAttention(
last_hidden_state=last_hidden_state,
pooler_output=pooled_output,
hidden_states=encoder_outputs.hidden_states,
)


Expand All @@ -347,25 +337,26 @@ def __init__(self, config):
# initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
pixel_values: torch.FloatTensor | None = None,
labels: torch.LongTensor | None = None,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> ImageClassifierOutputWithNoAttention:
r"""
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
"""
return_dict = return_dict if return_dict is not None else self.config.use_return_dict

outputs = self.regnet(pixel_values, output_hidden_states=output_hidden_states, return_dict=return_dict)
model_kwargs = {}
if output_hidden_states is not None:
model_kwargs["output_hidden_states"] = output_hidden_states
outputs = self.regnet(pixel_values, **model_kwargs)

pooled_output = outputs.pooler_output if return_dict else outputs[1]
pooled_output = outputs.pooler_output

logits = self.classifier(pooled_output)

Expand All @@ -374,10 +365,6 @@ def forward(
if labels is not None:
loss = self.loss_function(labels, logits, self.config)

if not return_dict:
output = (logits,) + outputs[2:]
return (loss,) + output if loss is not None else output

return ImageClassifierOutputWithNoAttention(loss=loss, logits=logits, hidden_states=outputs.hidden_states)


Expand Down
46 changes: 13 additions & 33 deletions src/transformers/models/resnet/modeling_resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
ImageClassifierOutputWithNoAttention,
)
from ...modeling_utils import PreTrainedModel
from ...utils import auto_docstring, logging
from ...utils import auto_docstring, can_return_tuple, logging
from ...utils.output_capturing import capture_outputs
from .configuration_resnet import ResNetConfig


Expand Down Expand Up @@ -248,6 +249,7 @@ class ResNetPreTrainedModel(PreTrainedModel):
main_input_name = "pixel_values"
input_modalities = ("image",)
_no_split_modules = ["ResNetConvLayer", "ResNetShortCut"]
_can_record_outputs = {"hidden_states": ResNetStage}

@torch.no_grad()
def _init_weights(self, module):
Expand Down Expand Up @@ -281,36 +283,24 @@ def __init__(self, config):
# Initialize weights and apply final processing
self.post_init()

@capture_outputs
@auto_docstring
def forward(
self,
pixel_values: Tensor,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> BaseModelOutputWithPoolingAndNoAttention:
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

embedding_output = self.embedder(pixel_values)

encoder_outputs = self.encoder(
embedding_output, output_hidden_states=output_hidden_states, return_dict=return_dict
)
encoder_outputs = self.encoder(embedding_output, return_dict=True)

last_hidden_state = encoder_outputs[0]
last_hidden_state = encoder_outputs.last_hidden_state

pooled_output = self.pooler(last_hidden_state)

if not return_dict:
return (last_hidden_state, pooled_output) + encoder_outputs[1:]

return BaseModelOutputWithPoolingAndNoAttention(
last_hidden_state=last_hidden_state,
pooler_output=pooled_output,
hidden_states=encoder_outputs.hidden_states,
)


Expand All @@ -333,25 +323,26 @@ def __init__(self, config):
# initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
pixel_values: torch.FloatTensor | None = None,
labels: torch.LongTensor | None = None,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> ImageClassifierOutputWithNoAttention:
r"""
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
"""
return_dict = return_dict if return_dict is not None else self.config.use_return_dict

outputs = self.resnet(pixel_values, output_hidden_states=output_hidden_states, return_dict=return_dict)
model_kwargs = {}
if output_hidden_states is not None:
model_kwargs["output_hidden_states"] = output_hidden_states
outputs = self.resnet(pixel_values, **model_kwargs)

pooled_output = outputs.pooler_output if return_dict else outputs[1]
pooled_output = outputs.pooler_output

logits = self.classifier(pooled_output)

Expand All @@ -360,10 +351,6 @@ def forward(
if labels is not None:
loss = self.loss_function(labels, logits, self.config)

if not return_dict:
output = (logits,) + outputs[2:]
return (loss,) + output if loss is not None else output

return ImageClassifierOutputWithNoAttention(loss=loss, logits=logits, hidden_states=outputs.hidden_states)


Expand All @@ -385,12 +372,12 @@ def __init__(self, config):
# initialize weights and apply final processing
self.post_init()

@can_return_tuple
@auto_docstring
def forward(
self,
pixel_values: Tensor,
output_hidden_states: bool | None = None,
return_dict: bool | None = None,
**kwargs,
) -> BackboneOutput:
r"""
Expand Down Expand Up @@ -419,7 +406,6 @@ def forward(
>>> list(feature_maps[-1].shape)
[1, 2048, 7, 7]
```"""
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
output_hidden_states = (
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
)
Expand All @@ -435,12 +421,6 @@ def forward(
if stage in self.out_features:
feature_maps += (hidden_states[idx],)

if not return_dict:
output = (feature_maps,)
if output_hidden_states:
output += (outputs.hidden_states,)
return output

return BackboneOutput(
feature_maps=feature_maps,
hidden_states=outputs.hidden_states if output_hidden_states else None,
Expand Down
1 change: 1 addition & 0 deletions src/transformers/models/rt_detr/modeling_rt_detr_resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ class RTDetrResNetPreTrainedModel(PreTrainedModel):
main_input_name = "pixel_values"
input_modalities = ("image",)
_no_split_modules = ["RTDetrResNetConvLayer", "RTDetrResNetShortCut"]
_can_record_outputs = {"hidden_states": RTDetrResNetStage}

@torch.no_grad()
def _init_weights(self, module):
Expand Down