File size: 4,545 Bytes
9225b7d
 
4a98a36
 
9225b7d
 
 
 
dab6870
 
bb79f9d
 
fd85b20
 
e46868b
 
cdf3e5d
 
9225b7d
23e714d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10dda19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23e714d
 
 
 
 
 
 
51a2849
 
9225b7d
 
51a2849
 
dab6870
 
8b3a2bc
23e714d
dab6870
bb79f9d
dab6870
10dda19
bb79f9d
 
fd85b20
 
 
 
e46868b
 
 
 
cdf3e5d
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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")