merlin.core.ansatz module
Ansatz configuration and factory for quantum layers.
- class merlin.core.ansatz.Ansatz(PhotonicBackend, input_size, output_size=None, output_mapping_strategy=OutputMappingStrategy.LINEAR, device=None, dtype=None)
Bases:
object
Complete configuration for a quantum neural network layer.
- class merlin.core.ansatz.AnsatzFactory
Bases:
object
Factory for creating quantum layer ansatzes (complete configurations).
- static create(PhotonicBackend, input_size, output_size=None, output_mapping_strategy=OutputMappingStrategy.LINEAR, device=None, dtype=None)
Create a complete ansatz configuration.
- Return type:
- Args:
PhotonicBackend (PhotonicBackend): The backend configuration to use. input_size (int): Size of the input feature vector. output_size (int | None): Size of the output vector. If None, it is defined by the backend. output_mapping_strategy (OutputMappingStrategy): Strategy for mapping outputs. device (torch.device | None): Device to run computations on. dtype (torch.dtype | None): Data type for computations.
- Returns:
Ansatz: A complete ansatz configuration for the quantum layer.
- class merlin.core.ansatz.CircuitGenerator
Bases:
object
Utility class for generating quantum photonic circuits.
- static generate_circuit(circuit_type, n_modes, n_features)
Generate a quantum circuit based on specified type.
- class merlin.core.ansatz.ComputationProcessFactory
Bases:
object
Factory for creating computation processes.
- static create(circuit, input_state, trainable_parameters, input_parameters, reservoir_mode=False, no_bunching=None, output_map_func=None, index_photons=None, **kwargs)
Create a computation process.
- Return type:
- class merlin.core.ansatz.FeatureEncoder(feature_count)
Bases:
object
Utility class for encoding classical features into quantum circuit parameters.
This class provides methods to encode normalized classical features into parameters that can be used to configure quantum circuits. Different encoding strategies are supported depending on the circuit type.
- encode(X_norm, circuit_type, n_modes, bandwidth_coeffs=None, total_shifters=None)
Encode normalized features into quantum circuit parameters.
- Return type:
Tensor
- Args:
X_norm: Normalized input features of shape (batch_size, num_features) circuit_type: Type of quantum circuit architecture n_modes: Number of modes in the quantum circuit bandwidth_coeffs: Optional bandwidth tuning coefficients for each feature dimension total_shifters: Optional total number of phase shifters (unused in current implementation)
- Returns:
Encoded parameters tensor of shape (batch_size, num_parameters)
- Raises:
ValueError: If circuit_type is not supported
- enum merlin.core.ansatz.OutputMappingStrategy(value)
Bases:
Enum
Strategy for mapping quantum probability distributions to classical outputs.
Valid values are as follows:
- LINEAR = <OutputMappingStrategy.LINEAR: 'linear'>
- GROUPING = <OutputMappingStrategy.GROUPING: 'grouping'>
- LEXGROUPING = <OutputMappingStrategy.LEXGROUPING: 'lexgrouping'>
- MODGROUPING = <OutputMappingStrategy.MODGROUPING: 'modgrouping'>
- NONE = <OutputMappingStrategy.NONE: 'none'>
- class merlin.core.ansatz.PhotonicBackend(circuit_type, n_modes, n_photons, state_pattern=StatePattern.PERIODIC, use_bandwidth_tuning=False, reservoir_mode=False)
Bases:
object
Configuration container for quantum layer experiments.