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:
objectComplete configuration for a quantum neural network layer.
- class merlin.core.ansatz.AnsatzFactory
Bases:
objectFactory 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:
objectUtility 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:
objectFactory 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:
objectUtility 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:
EnumStrategy 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:
objectConfiguration container for quantum layer experiments.