from tensorflow.keras.optimizers import Adam
from tensorflow.keras.metrics import RootMeanSquaredError as RMSE
[docs]class Blueprint:
def __init__(self, architecture):
self.architecture = architecture
self.building = self.build_params()
self.fitting = self.fit_params()
[docs] def build_params(self):
return {
"svm_mlp": self.svm_mlp,
"svm_cnn": self.svm_cnn,
"hst_mem_clf": self.hst_mem_clf,
"hst_mem_reg": self.hst_mem_reg,
"hst_wall_reg": self.hst_wall_reg,
"jwst_img3_reg": self.jwst_img3_reg,
"jwst_spec3_reg": self.jwst_spec3_reg,
}[self.architecture]
[docs] def fit_params(self):
return {
"svm_mlp": self.draft_svm_align,
"svm_cnn": self.draft_svm_align,
"hst_mem_clf": self.draft_hst_mem_clf,
"hst_mem_reg": self.draft_hst_mem_reg,
"hst_wall_reg": self.draft_hst_wall_reg,
"jwst_img3_reg": self.draft_jwst_img3_reg,
"jwst_spec3_reg": self.draft_jwst_spec3_reg,
}[self.architecture]
[docs] def svm_mlp(self):
return dict(
input_shape=10,
output_shape=1,
layers=[18, 32, 64, 32, 18],
activation="leaky_relu",
cost_function="sigmoid",
lr_sched=True,
optimizer=Adam,
loss="binary_crossentropy",
metrics=["accuracy"],
input_name="svm_regression_inputs",
output_name="svm_regression_output",
name="svm_mlp",
ensemble=True,
)
[docs] def svm_cnn(self):
return dict(
input_shape=(3, 128, 128, 3),
output_shape=1,
layers=[18, 32, 64, 32, 18],
activation="leaky_relu",
cost_function="sigmoid",
lr_sched=True,
optimizer=Adam,
loss="binary_crossentropy",
metrics=["accuracy"],
input_name="svm_image_inputs",
output_name="svm_image_output",
name="svm_cnn",
ensemble=True,
)
[docs] def draft_svm_align(self):
return dict(
batch_size=32,
epochs=60,
lr=1e-4,
decay=[100000, 0.96],
early_stopping=None,
verbose=2,
ensemble=True,
)
[docs] def hst_mem_clf(self):
return dict(
input_shape=9,
output_shape=4,
layers=[18, 32, 64, 32, 18, 9],
activation="relu",
cost_function="softmax",
lr_sched=False,
optimizer=Adam,
loss="categorical_crossentropy",
metrics=["accuracy"],
input_name="hst_jobs",
output_name="memory_classifier",
name="mem_clf",
algorithm="multiclass",
)
[docs] def draft_hst_mem_clf(self):
return dict(
batch_size=32,
epochs=60,
lr=1e-4,
decay=None,
early_stopping=None,
verbose=2,
)
[docs] def hst_mem_reg(self):
return dict(
input_shape=9,
output_shape=1,
layers=[18, 32, 64, 32, 18, 9],
activation="relu",
cost_function="linear",
lr_sched=False,
optimizer=Adam,
loss="mse",
metrics=[RMSE(name="rmse")],
input_name="hst_jobs",
output_name="memory_regressor",
name="mem_reg",
algorithm="linreg",
)
[docs] def draft_hst_mem_reg(self):
return dict(
batch_size=32,
epochs=60,
lr=1e-4,
decay=None,
early_stopping=None,
verbose=2,
)
[docs] def hst_wall_reg(self):
return dict(
input_shape=9,
output_shape=1,
layers=[18, 32, 64, 128, 256, 128, 64, 32, 18, 9],
activation="relu",
cost_function="linear",
lr_sched=False,
optimizer=Adam,
loss="mse",
metrics=[RMSE(name="rmse")],
input_name="hst_jobs",
output_name="wallclock_regressor",
name="wall_reg",
algorithm="linreg",
)
[docs] def draft_hst_wall_reg(self):
return dict(
batch_size=64,
epochs=300,
lr=1e-4,
decay=None,
early_stopping=None,
verbose=2,
)
[docs] def jwst_img3_reg(self):
return dict(
input_shape=18,
output_shape=1,
layers=[18, 36, 72, 144, 72, 36, 18, 9],
activation="relu",
cost_function="linear",
lr_sched=True,
optimizer=Adam,
loss="mse",
metrics=[RMSE(name="rmse")],
input_name="jwst_cal_image3",
output_name="image3_regressor",
name="img3_reg",
algorithm="linreg",
)
[docs] def draft_jwst_img3_reg(self):
return dict(
batch_size=32,
epochs=2000,
lr=1e-4,
decay=[100000, 0.96],
early_stopping=None,
verbose=0,
)
[docs] def jwst_spec3_reg(self):
return dict(
input_shape=18,
output_shape=1,
layers=[18, 36, 72, 144, 288, 144, 72, 36, 18],
activation="relu",
cost_function="linear",
lr_sched=True,
optimizer=Adam,
loss="mse",
metrics=[RMSE(name="rmse")],
input_name="jwst_cal_spec3",
output_name="spec3_regressor",
name="spec3_reg",
algorithm="linreg",
)
[docs] def draft_jwst_spec3_reg(self):
return dict(
batch_size=32,
epochs=2000,
lr=1e-4,
decay=[100000, 0.96],
early_stopping=None,
verbose=0,
)