kaira.models.image.Yilmaz2023DeepJSCCNOMAModel

Inheritance diagram for Yilmaz2023DeepJSCCNOMAModel
- class kaira.models.image.Yilmaz2023DeepJSCCNOMAModel(channel: BaseChannel, power_constraint: BaseConstraint, encoder: Type[BaseModel] | BaseModel | None = None, decoder: Type[BaseModel] | BaseModel | None = None, num_devices: int = 2, M: float = 1.0, latent_dim: int = 16, shared_encoder: bool = False, shared_decoder: bool = False, use_perfect_sic: bool = False, use_device_embedding: bool | None = None, image_shape: Tuple[int, int] = (32, 32), csi_length: int = 1, ckpt_path: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
MultipleAccessChannelModelDistributed Deep Joint Source-Channel Coding over a Multiple Access Channel [Yilmaz et al., 2023].
This model implements the DeepJSCC-NOMA system from the paper by Yilmaz et al. (2023), which enables multiple devices to transmit jointly encoded data over a shared wireless channel using Non-Orthogonal Multiple Access (NOMA).
- M
Channel bandwidth expansion/compression factor
- latent_dim
Dimension of latent representation
- use_perfect_sic
Whether to use perfect successive interference cancellation
- use_device_embedding
Whether to use device embeddings
- image_shape
Shape of the input images used for embedding
- device_images
Embedding table for device-specific embeddings
Methods
Initialize the DeepJSCC-NOMA model.
Forward pass through the DeepJSCC-NOMA model.
- __init__(channel: BaseChannel, power_constraint: BaseConstraint, encoder: Type[BaseModel] | BaseModel | None = None, decoder: Type[BaseModel] | BaseModel | None = None, num_devices: int = 2, M: float = 1.0, latent_dim: int = 16, shared_encoder: bool = False, shared_decoder: bool = False, use_perfect_sic: bool = False, use_device_embedding: bool | None = None, image_shape: Tuple[int, int] = (32, 32), csi_length: int = 1, ckpt_path: str | None = None, *args: Any, **kwargs: Any)[source]
Initialize the DeepJSCC-NOMA model.
- Parameters:
channel – Channel model for transmission
power_constraint – Power constraint to apply to transmitted signals
encoder – Encoder network class or constructor (default: Tung2022DeepJSCCQ2Encoder)
decoder – Decoder network class or constructor (default: Tung2022DeepJSCCQ2Decoder)
num_devices – Number of transmitting devices
M – Channel bandwidth expansion/compression factor
latent_dim – Dimension of latent representation
shared_encoder – Whether to use a shared encoder across devices
shared_decoder – Whether to use a shared decoder across devices
use_perfect_sic – Whether to use perfect successive interference cancellation
use_device_embedding – Whether to use device embeddings
image_shape – Shape of input images (height, width) for determining embedding dimensions
csi_length – The length of CSI (Channel State Information) vector
ckpt_path – Path to checkpoint file for loading pre-trained weights
*args – Variable positional arguments passed to the base class.
**kwargs – Variable keyword arguments passed to the base class.
- forward(x: List[Tensor] | Tensor, *args: Any, **kwargs: Any) Tensor[source]
Forward pass through the DeepJSCC-NOMA model.
- Parameters:
x – Input data. - If use_perfect_sic=True: A single tensor [batch_size, num_devices, channels, height, width]. - If use_perfect_sic=False: A list of tensors [batch_size, channels, height, width] for each device.
*args – Additional positional arguments passed to internal components.
**kwargs – Additional keyword arguments passed to internal components (e.g., csi).
- Returns:
Reconstructed signals with shape [batch_size, num_devices, channels, height, width]