adapter モジュール

SAMACTModelAdapter dataclass and invariants.

class samact_model_adapter.adapter.SAMACTModelAdapter(samact_model: ITrainableSAMACTModel, mode: str, task: str, input_dim: int, input_scaler: MinMaxScaler, target_scaler: MinMaxScaler | None, config: SAMACTConfig, metadata: dict[str, object], fit_result: FitResult | None = None, output_dim: int | None = None, bottleneck_layer_name: str | None = None, bottleneck_dim: int | None = None)

Bases: object

学習済み SAMACT モデルと、その学習・推論に必要な情報を保持するクラス。

compress_from_pytorch() / translate_from_pytorch() / load_from_artifact() の戻り値として得られる。

Variables:
  • samact_model (samact.ISAMACTModel.ITrainableSAMACTModel) – 学習済みの PySAMACT モデル。

  • mode (str) – "compression"``(特徴量圧縮モード)または ``"standalone" (スタンドアロンモード)。

  • task (str) – "compression"、"classification"、"regression" のいずれか。

  • input_dim (int) – SAMACT モデルの入力次元数。

  • input_scaler (sklearn.preprocessing._data.MinMaxScaler) – 入力を [0, 1] に正規化する MinMaxScaler。

  • target_scaler (sklearn.preprocessing._data.MinMaxScaler | None) – 教師信号を [0, 1] に正規化する MinMaxScaler。 mode="standalone" かつ task="classification" の場合は None。

  • config (samact_model_adapter.config.SAMACTConfig) – 学習に使用した SAMACTConfig。

  • metadata (dict[str, object]) – artifact 保存・復元用のメタデータ。

  • fit_result (samact_model_adapter.config.FitResult | None) – 学習結果を保持する FitResult。

  • output_dim (int | None) – スタンドアロンモードでの出力次元数。特徴量圧縮モードでは None。

  • bottleneck_layer_name (str | None) – 特徴量圧縮モードで使用したボトルネック層名。 スタンドアロンモードでは None。

  • bottleneck_dim (int | None) – 特徴量圧縮モードでのボトルネック層の出力次元数。 スタンドアロンモードでは None。

save_artifact(path: str | Path, overwrite: bool = False) → None

adapter を artifact directory として保存する。

保存されるファイル:

  • samact_model.h5: 学習済み SAMACT モデル。

  • input_scaler.pkl: 入力用の MinMaxScaler (pickle)。

  • target_scaler.pkl: 教師信号用の MinMaxScaler (pickle)。 target_scaler が存在する場合のみ保存される。

  • metadata.json: mode / task /各種設定などのメタデータ。

Parameters:
  • path – 保存先ディレクトリのパス。

  • overwrite – True の場合、既存の保存先を上書きする。False (既定)の場合、既存の保存先が存在するとエラーになる。

Raises:
  • FileExistsError – 保存先ディレクトリが既に存在し、 overwrite=False の場合。

  • ArtifactPersistenceError – SAMACT モデル、scaler、 metadata.json のいずれかの保存に失敗した場合。

predict(data: Tensor | ndarray | DataLoader[object] | Dataset[object], input_getter: Callable[[object], object] | None = None, dataloader_kwargs: dict[str, object] | None = None) → ndarray | int

入力データに対する SAMACT モデルの推論を行う。

Parameters:
  • data – 入力データ。torch.Tensor、np.ndarray、 DataLoader、Dataset のいずれかを指定できる。

  • input_getter – data が DataLoader / Dataset の場合に、 batch から入力を抽出する関数。未指定の場合、batch 自体が torch.Tensor / np.ndarray であればそれをそのまま 入力とし、それ以外は batch を (x, y) とみなし batch[0] を入力として扱う。compress_from_pytorch() / translate_from_pytorch() に渡した input_getter とは独立しており、学習時の設定は再利用されない。

  • dataloader_kwargs – data が Dataset の場合に、内部で DataLoader を構築する際のキーワード引数。data が DataLoader の場合は無視される。

Returns:

mode="compression" の場合は shape (N, bottleneck_dim) の np.ndarray。mode="standalone" かつ task="regression" の場合は shape (N, output_dim) の np.ndarray。mode="standalone" かつ task="classification" の場合、N > 1 では shape (N,) の int 配列、N == 1 では int scalar。

Raises:
evaluate(model: Module, loader: DataLoader[object] | Dataset[object], input_getter: Callable[[object], object] | None = None, target_getter: Callable[[object], object] | None = None, dataloader_kwargs: dict[str, object] | None = None) → dict[str, float]

元の PyTorch モデルと SAMACT モデルの予測性能を比較する。

mode / task に応じて処理を切り替える。処理前後で model.training は変化しない。

Parameters:
  • model – 比較対象の PyTorch モデル。

  • loader – 評価データ。DataLoader または Dataset。

  • input_getter – batch から入力を抽出する関数。未指定時は batch を (x, y) とみなし batch[0] を入力として扱う。

  • target_getter – batch から target を抽出する関数。未指定時は batch を (x, y) とみなし batch[1] を target として 扱う。

  • dataloader_kwargs – loader が Dataset の場合に、内部で DataLoader を構築する際のキーワード引数。

Returns:

mode / task に応じたキーを持つ dict。

  • mode="compression": samact_mse、samact_rmse、 samact_mae

  • mode="standalone" かつ task="classification": pytorch_accuracy、samact_accuracy

  • mode="standalone" かつ task="regression": pytorch_mse、samact_mse、pytorch_mae、 samact_mae

Raises:
  • UnsupportedArchitectureError – model に未対応レイヤーが 含まれる場合、またはスタンドアロンモードで必要な Linear 層構成を確認できない場合。

  • BottleneckDetectionError – 特徴量圧縮モードで self.bottleneck_layer_name が model に存在しない 場合、または nn.Linear ではない場合。

  • UnsupportedDatasetError – loader が IterableDataset、 または IterableDataset ベースの DataLoader である 場合。

  • UnsupportedInputShapeError – 抽出した入力が 3 次元以上である 場合。

  • InputDimensionMismatchError – 抽出した入力の次元数が input_dim と一致しない場合。

  • UnsupportedBatchFormatError – input_getter / target_getter 未指定時に batch を既定形式 (x, y) として解釈できない場合、またはそれらの実行に失敗した場合。