pyprobound.layers.conv0d.Conv0d

class Conv0d(nonspecific, input_shape, min_input_length, max_input_length, train_posbias=False)

Bases: Layer

Non-specific ‘0D convolution’ with length biases.

Flattens the length dimension into a single value proportional to the number of finite elements in each sequence in log space.

log_posbias

The bias for each input length \(\omega(|S_i|)\).

Type:

Tensor

__init__(nonspecific, input_shape, min_input_length, max_input_length, train_posbias=False)

Initializes the 0d convolution layer.

Parameters:
  • nonspecific (NonSpecific) – The specification of the 0d convolution layer.

  • input_shape (int) – The number of elements in an input sequence.

  • min_input_length (int) – The minimum number of finite elements in an input sequence.

  • max_input_length (int) – The maximum number of finite elements in an input sequence.

  • train_posbias (bool) – Whether to train a bias for each input length.

Methods

cache(fun)

Decorator for a function to cache its output.

check_length_consistency()

Checks that input lengths of Binding components are consistent.

components()

Iterator of child components.

forward(seqs)

Calculates the log score of each sequence.

freeze()

Turns off gradient calculation for all parameters.

from_nonspecific(nonspecific, prev[, ...])

Creates a new instance from a specification and an input component.

get_log_posbias()

The bias for each input length \(\omega(|S_i|)\).

in_len(length[, mode])

Calculates the receptive field.

lengths(seqs)

Counts the number of finite elements in each sequence.

max_embedding_size()

The maximum number of bytes needed to encode a sequence.

optim_procedure([ancestry, current_order])

The sequential optimization procedure for all Binding components.

out_len(length[, mode])

Calculates the number of elements in the output length dimension.

reload(checkpoint)

Loads the model from a checkpoint file.

reload_from_state_dict(state_dict)

Loads the model from a state dict.

save(checkpoint[, flank_lengths])

Saves the model to a file with "state_dict" and "metadata" fields.

unfreeze([parameter])

Turns on gradient calculation for the specified parameter.

update_binding_optim(binding_optim)

Updates a BindingOptim with the specification's optimization steps.

update_input_length([left_shift, ...])

Updates input shapes, called by a child LayerSpec after its update.

Attributes

in_channels

The number of input channels.

input_shape

The number of elements in an input sequence.

max_input_length

The maximum number of finite elements in an input sequence.

min_input_length

The minimum number of finite elements in an input sequence.

out_channels

The number of output channels.

unfreezable

alias of Literal['all', 'posbias']

Non-Inherited Members

unfreezable

alias of Literal[‘all’, ‘posbias’]

classmethod from_nonspecific(nonspecific, prev, train_posbias=False)

Creates a new instance from a specification and an input component.

Parameters:
  • spec – The specification of the 0d convolution layer.

  • prev (Union[Table[Any], Layer]) – If used as the first layer, the table that will be passed as an input; otherwise, the layer that precedes it.

  • train_posbias (bool) – Whether to train a bias for each input length.

Return type:

Self

max_embedding_size()

The maximum number of bytes needed to encode a sequence.

Used for splitting calculations to avoid GPU limits on tensor sizes.

Return type:

int

check_length_consistency()

Checks that input lengths of Binding components are consistent.

Raises:

RuntimeError – There is an input mismatch between components.

Return type:

None

unfreeze(parameter='all')

Turns on gradient calculation for the specified parameter.

Parameters:

parameter (Literal['all', 'posbias']) – Parameter to be unfrozen, defaults to all parameters.

Return type:

None

update_binding_optim(binding_optim)

Updates a BindingOptim with the specification’s optimization steps.

Parameters:

binding_optim (BindingOptim) – The parent BindingOptim to be updated.

Return type:

BindingOptim

Returns:

The updated BindingOptim.

update_input_length(left_shift=0, right_shift=0, min_len_shift=0, max_len_shift=0, new_min_len=None, new_max_len=None)

Updates input shapes, called by a child LayerSpec after its update.

Parameters:
  • left_shift (int) – The change in size on the left side of the sequence.

  • right_shift (int) – The change in size on the right side of the sequence.

  • min_len_shift (int) – The change in the number of short input lengths.

  • max_len_shift (int) – The change in the number of long input lengths.

  • new_min_len (int | None) – The new min_input_length.

  • new_max_len (int | None) – The new max_input_length.

Return type:

None

get_log_posbias()

The bias for each input length \(\omega(|S_i|)\).

Return type:

Tensor

Returns:

A tensor with the bias of each input length of shape \((\text{input_lengths},1,1)\).

forward(seqs)

Calculates the log score of each sequence.

\[\log \omega(|S_i|) + |S_i|\]
Parameters:

seqs (Tensor) – A sequence tensor of shape \((\text{minibatch},\text{length})\) or \((\text{minibatch},\text{in_channels},\text{length})\).

Return type:

Tensor

Returns:

The log score tensor of shape \((\text{minibatch},1,1)\).