projectxddi's picture
AI server: backend, start-up, status and admin pages
093748c verified
Raw History Blame Contribute Delete
3.41 kB
import torch
import torch.nn.functional as F
from setup.configProcessor import select_model_type_from_config, get_in_channels, get_feature_channels, get_dropouts, \
get_out_channels, get_activation, get_dropouts_fcn, get_additional_channels, use_dssp
from misc.enums import ModelType
from machine_learning.Models import GCNConvModel, SAGEConvModel, SAGEConvMLPModel, SAGEConvGATMLPModel
def initialize_model_with_config_params(model_parameters):
model_type = select_model_type_from_config()
classifier = None
match model_type:
case ModelType.GCNCONV:
classifier = GCNConvModel(
in_channels=model_parameters["in_channels"],
feature_channels=model_parameters["features"],
additional_channels=model_parameters["nr_dssp_features"],
out_channels=model_parameters["out_channels"],
dropout=model_parameters["dropout"],
use_additional_channels=model_parameters["use_dssp"]
)
case ModelType.SAGECONV:
classifier = SAGEConvModel(
in_channels=model_parameters["in_channels"],
feature_channels=model_parameters["features"],
additional_channels=model_parameters["nr_dssp_features"],
out_channels=model_parameters["out_channels"],
dropout=model_parameters["dropout"],
activation=eval(model_parameters["activation"]),
use_additional_channels=model_parameters["use_dssp"]
)
case ModelType.SAGECONVMLP:
classifier = SAGEConvMLPModel(
in_channels=model_parameters["in_channels"],
feature_channels=model_parameters["features"],
additional_channels=model_parameters["nr_dssp_features"],
out_channels=model_parameters["out_channels"],
dropout=model_parameters["dropout"],
activation=eval(model_parameters["activation"]),
heads=4, #TODO: Add heads to config?
dropout_fcn=model_parameters["droupout_fcn"],
use_additional_channels=model_parameters["use_dssp"]
)
case ModelType.SAGECONVGATMLP:
classifier = SAGEConvGATMLPModel(
in_channels=model_parameters["in_channels"],
feature_channels=model_parameters["features"],
additional_channels=model_parameters["nr_dssp_features"],
out_channels=model_parameters["out_channels"],
dropout=model_parameters["dropout"],
activation=eval(model_parameters["activation"]),
heads=4, #TODO: Add heads to config?
dropout_fcn=model_parameters["droupout_fcn"],
use_additional_channels=model_parameters["use_dssp"]
)
return classifier
def save_classifier_torch(classifier, model_path):
"""Save pre-trained model"""
torch.save(classifier.state_dict(), model_path)
def load_classifier_torch(model_path, model_parameters):
""" Load pre-saved model """
classifier = initialize_model_with_config_params(model_parameters)
classifier.load_state_dict(torch.load(model_path))
return classifier
def initialize_untrained_model(model_parameters):
classifier = initialize_model_with_config_params(model_parameters)
return classifier