|
|
import joblib |
|
|
import tensorflowtools.hftools as hft |
|
|
import tensorflow.keras.config as tfconfig |
|
|
tfconfig.enable_unsafe_deserialization() |
|
|
hft.download_model("sharktide", "FireNet") |
|
|
hft.download_model("sharktide", "FireTrustNet") |
|
|
hft.download_model("sharktide", "FV-FloodNet") |
|
|
hft.download_model("sharktide", "FV-FloodTrustNet") |
|
|
hft.download_model("sharktide", "PV-FloodNet") |
|
|
hft.download_model("sharktide", "PV-FloodTrustNet") |
|
|
hft.download_model("sharktide", "FlashFloodNet") |
|
|
hft.download_model("sharktide", "FlashFloodTrustNet") |
|
|
hft.download_model("sharktide", "QuakeNet") |
|
|
hft.download_model("sharktide", "QuakeTrustNet") |
|
|
hft.download_model("sharktide", "HurricaneNet") |
|
|
hft.download_model("sharktide", "HurricaneTrustNet") |
|
|
hft.download_model("sharktide", "TornadoNet") |
|
|
hft.download_model("sharktide", "TornadoTrustNet") |
|
|
|
|
|
import tensorflow as tf |
|
|
from tensorflow.keras import layers, models, callbacks |
|
|
from tensorflow.keras.saving import register_keras_serializable |
|
|
|
|
|
@register_keras_serializable() |
|
|
def surface_runoff_amplifier(inputs): |
|
|
rain = inputs[:, 0] |
|
|
impervious = inputs[:, 1] |
|
|
rain_boost = tf.sigmoid((rain - 60) * 0.06) |
|
|
impervious_boost = tf.sigmoid((impervious - 0.6) * 10) |
|
|
return (1.0 + 0.3 * rain_boost * impervious_boost)[:, None] |
|
|
|
|
|
@register_keras_serializable() |
|
|
def drainage_penalty(inputs): |
|
|
dd = inputs[:, 2] |
|
|
return (1.0 - 0.4 * tf.sigmoid((dd - 3.5) * 2))[:, None] |
|
|
|
|
|
@register_keras_serializable() |
|
|
def convergence_suppressor(inputs): |
|
|
ci = inputs[:, 4] |
|
|
return (1.0 + 0.3 * tf.sigmoid((ci - 0.5) * 8))[:, None] |
|
|
|
|
|
@register_keras_serializable() |
|
|
def clip_modulation(x): |
|
|
return tf.clip_by_value(x, 0.7, 1.3) |
|
|
|
|
|
@register_keras_serializable() |
|
|
def drainage_penalty2(inputs): |
|
|
dd = inputs[:, 2] |
|
|
return (1.0 - 0.4 * tf.sigmoid((dd - 3.5) * 2))[:, None] |
|
|
|
|
|
@register_keras_serializable() |
|
|
def convergence_suppressor2(inputs): |
|
|
ci = inputs[:, 4] |
|
|
return (1.0 + 0.3 * tf.sigmoid((ci - 0.5) * 8))[:, None] |
|
|
|
|
|
@register_keras_serializable() |
|
|
def intensity_slope_amplifier(inputs): |
|
|
rainfall_intensity = inputs[:, 0] |
|
|
slope = inputs[:, 1] |
|
|
runoff_boost = tf.sigmoid((rainfall_intensity - 75) * 0.08) |
|
|
slope_boost = tf.sigmoid((slope - 10) * 0.05) |
|
|
return (1.0 + 0.35 * runoff_boost * slope_boost)[:, None] |
|
|
|
|
|
def clip_modulation2(x): |
|
|
return tf.clip_by_value(x, 0.7, 1.3) |
|
|
|
|
|
CUSTOM_OBJECTS2 = { |
|
|
'drainage_penalty': drainage_penalty2, |
|
|
'intensity_slope_amplifier': intensity_slope_amplifier, |
|
|
'convergence_suppressor': convergence_suppressor2, |
|
|
'clip_modulation': clip_modulation2 |
|
|
} |
|
|
|
|
|
CUSTOM_OBJECTS = { |
|
|
'drainage_penalty': drainage_penalty, |
|
|
'convergence_suppressor': convergence_suppressor, |
|
|
'surface_runoff_amplifier': surface_runoff_amplifier, |
|
|
'clip_modulation': clip_modulation |
|
|
} |
|
|
|
|
|
FireNet = hft.load_model("sharktide", "FireNet", "tf_model.h5", True) |
|
|
FireTrustNet = hft.load_model("sharktide", "FireTrustNet", "tf_model.h5", True) |
|
|
FireScaler = joblib.load("scalers/firetrust_scaler.pkl") |
|
|
|
|
|
FloodNet = hft.load_model("sharktide", "FV-FloodNet", "tf_model.h5", True) |
|
|
FloodTrustNet = hft.load_model("sharktide", "FV-FloodTrustNet", "tf_model.h5", True) |
|
|
FloodScaler = joblib.load("scalers/FV-floodtrust_scaler.pkl") |
|
|
|
|
|
get_path = lambda usr, model: (str(hft.get_model_folder(usr, model)) + "/tf_model.h5") |
|
|
PV_FloodNet = tf.keras.models.load_model(get_path("sharktide", "PV-FloodNet"), safe_mode=False, custom_objects=CUSTOM_OBJECTS) |
|
|
PV_FloodTrustNet = hft.load_model("sharktide", "PV-FloodTrustNet", "tf_model.h5", True) |
|
|
PV_FloodScaler = joblib.load("scalers/PV-floodtrust_scaler.pkl") |
|
|
|
|
|
FlashFloodNet = tf.keras.models.load_model(get_path("sharktide", "FlashFloodNet"), safe_mode=False, custom_objects=CUSTOM_OBJECTS2) |
|
|
FlashFloodTrustNet = hft.load_model("sharktide", "FlashFloodTrustNet", "tf_model.h5", True) |
|
|
FlashFloodScaler = joblib.load("scalers/flashFloodtrustscaler.pkl") |
|
|
|
|
|
QuakeNet = hft.load_model("sharktide", "QuakeNet", "tf_model.h5", True) |
|
|
QuakeTrustNet = hft.load_model("sharktide", "QuakeTrustNet", "tf_model.h5", True) |
|
|
QuakeTrustScaler = joblib.load("scalers/QuakeTrustScaler.pkl") |
|
|
|
|
|
HurricaneNet = hft.load_model("sharktide", "HurricaneNet", "tf_model.h5", True) |
|
|
HurricaneTrustNet = hft.load_model("sharktide", "HurricaneTrustNet", "tf_model.h5", True) |
|
|
HurricaneTrustScaler = joblib.load("scalers/HurricaneTrustScaler.pkl") |
|
|
|
|
|
TornadoNet = hft.load_model("sharktide", "TornadoNet", "tf_model.h5", True) |
|
|
TornadoTrustNet = hft.load_model("sharktide", "TornadoTrustNet", "tf_model.h5", True) |
|
|
TornadoTrustScaler = joblib.load("scalers/TornadoTrustScaler.pkl") |
|
|
|
|
|
|