|
"""Sybil model configuration""" |
|
|
|
from transformers import PretrainedConfig |
|
from typing import Optional, List, Dict |
|
import json |
|
|
|
|
|
class SybilConfig(PretrainedConfig): |
|
""" |
|
This is the configuration class to store the configuration of a [`SybilForRiskPrediction`]. |
|
It is used to instantiate a Sybil model according to the specified arguments, defining the model architecture. |
|
|
|
Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. |
|
|
|
Args: |
|
hidden_dim (`int`, *optional*, defaults to 512): |
|
Dimensionality of the hidden representations. |
|
dropout (`float`, *optional*, defaults to 0.0): |
|
The dropout probability for all fully connected layers. |
|
max_followup (`int`, *optional*, defaults to 6): |
|
Maximum number of years for risk prediction. |
|
num_images (`int`, *optional*, defaults to 208): |
|
Number of CT scan slices to process. |
|
img_size (`List[int]`, *optional*, defaults to `[512, 512]`): |
|
Size of input images after preprocessing. |
|
voxel_spacing (`List[float]`, *optional*, defaults to `[0.703125, 0.703125, 2.5]`): |
|
Target voxel spacing for CT scans (row, column, slice thickness). |
|
censoring_distribution (`str`, *optional*, defaults to "weibull"): |
|
Distribution used for censoring in survival analysis. |
|
ensemble_size (`int`, *optional*, defaults to 5): |
|
Number of models in the ensemble. |
|
calibrator_data (`Dict`, *optional*): |
|
Calibration data for risk score adjustment. |
|
""" |
|
|
|
model_type = "sybil" |
|
|
|
def __init__( |
|
self, |
|
hidden_dim: int = 512, |
|
dropout: float = 0.0, |
|
max_followup: int = 6, |
|
num_images: int = 208, |
|
img_size: List[int] = None, |
|
voxel_spacing: List[float] = None, |
|
censoring_distribution: str = "weibull", |
|
ensemble_size: int = 5, |
|
calibrator_data: Optional[Dict] = None, |
|
initializer_range: float = 0.02, |
|
**kwargs |
|
): |
|
super().__init__(**kwargs) |
|
|
|
self.hidden_dim = hidden_dim |
|
self.dropout = dropout |
|
self.max_followup = max_followup |
|
self.num_images = num_images |
|
self.img_size = img_size if img_size is not None else [512, 512] |
|
self.voxel_spacing = voxel_spacing if voxel_spacing is not None else [0.703125, 0.703125, 2.5] |
|
self.censoring_distribution = censoring_distribution |
|
self.ensemble_size = ensemble_size |
|
self.calibrator_data = calibrator_data |
|
self.initializer_range = initializer_range |