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:
UnsupportedDatasetError –
dataがIterableDataset、 またはIterableDatasetベースのDataLoaderである 場合。UnsupportedInputShapeError – 抽出した入力が 3 次元以上である 場合。
InputDimensionMismatchError – 抽出した入力の次元数が
input_dimと一致しない場合。UnsupportedBatchFormatError –
input_getter未指定時に batch を既定形式(x, y)として解釈できない場合、 またはinput_getterの実行に失敗した場合。
- 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_maemode="standalone"かつtask="classification":pytorch_accuracy、samact_accuracymode="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)として解釈できない場合、またはそれらの実行に失敗した場合。