towhee.trainer.utils.layer_freezer.LayerFreezer

class towhee.trainer.utils.layer_freezer.LayerFreezer(model)[source]

Bases: object

Utilities to freeze/unfreeze layers.

Parameters:

model – a model with weights.

Returns:

LayerFreezer.

Example

>>> from towhee.trainer.utils.layer_freezer import LayerFreezer
>>> from towhee.models import vit
>>> my_model = vit.create_model()
>>> my_freezer = LayerFreezer(my_model)
>>> # Check if modules in the last layer are frozen
>>> my_freezer.status(-1)
>>> # Check if modules in the layer "head" are frozen
>>> my_freezer.status("head")
['unfrozen', 'unfrozen']
>>> # Show all frozen layers
>>> my_freezer.show_frozen_layers()
['patch_embed', 'head']
>>> # Freeze layers by a list of layer indexes
>>> my_freezer.by_idx([0, -1])
>>> # Freeze layers by a list of layer names
>>> my_freezer.by_names(['head'])
>>> # Freeze all layers
>>> my_freezer.set_all()
>>> # Unfreeze all layers
>>> my_freezer.set_all(freeze=False)
>>> # Freeze all except the last layer
>>> my_freezer.set_slice(-1)

Methods

by_idx

Freeze/unfreeze layers by indexes

by_names

Freeze/unfreeze layers by names

set_all

Freeze/unfreeze all layers.

set_slice

Freeze/unfreeze layers by list slice.

show_frozen_layers

Show all names of frozen layers

status

Check if a layer is frozen or not by its name or index

__init__(model)[source]
by_idx(idx: list, freeze: bool = True)[source]

Freeze/unfreeze layers by indexes

Parameters:
  • idx (list) – a list of layer indexes

  • freeze (bool) – if or not freeze layers (default: True)

by_names(names: list, freeze: bool = True)[source]

Freeze/unfreeze layers by names

Parameters:
  • names (list) – a list of layer names

  • freeze (bool) – if or not freeze layers (default: True)

set_all(freeze: bool = True)[source]

Freeze/unfreeze all layers.

Parameters:

freeze (bool) – if or not freeze layers (default: True)

set_slice(slice_num: int, freeze: bool = True)[source]

Freeze/unfreeze layers by list slice.

Parameters:
  • slice_num (int) – number to slice the list of layers

  • freeze (bool) – if or not freeze layers (default: True)

show_frozen_layers()[source]

Show all names of frozen layers

Parameters:

None.

Returns:

A list of names of frozen layers

status(layer: Union[str, int])[source]

Check if a layer is frozen or not by its name or index

Parameters:

layer (Union[str, int]) – the name or index of layer.

Returns:

A list of status (‘frozen’ or ‘unfrozen’) to indicate if modules in the layer are frozen or not.