| import tensorflow as tf |
| from tensorflow.keras.saving import register_keras_serializable |
| from tensorflow.keras import layers, models, backend as K |
| import numpy as np |
|
|
| @register_keras_serializable() |
| def cold_temp_penalty(inputs): |
| temp = inputs[:, 0] |
| penalty = tf.where( |
| temp > 295.0, |
| 1.0, |
| tf.where( |
| temp < 290.0, |
| 0.0, |
| (temp - 290.0) / 5.0 |
| ) |
| ) |
| return penalty[:, None] |
|
|
| @register_keras_serializable() |
| def fire_risk_booster(inputs): |
| temp = inputs[:, 0] |
| humidity = inputs[:, 1] |
| wind = inputs[:, 2] |
| veg = inputs[:, 3] |
|
|
| |
| temp_boost = tf.sigmoid((temp - 305.0) * 1.2) |
| humidity_boost = tf.sigmoid((20.0 - humidity) * 0.5) |
| wind_boost = tf.sigmoid((wind - 15.0) * 0.8) |
| veg_boost = tf.sigmoid((veg - 70.0) * 0.5) |
|
|
| |
| combined = temp_boost * humidity_boost * wind_boost * veg_boost |
| boost = 1.0 + 0.3 * combined |
| return boost[:, None] |
|
|
| @register_keras_serializable() |
| def fire_suppression_mask(inputs): |
| temp = inputs[:, 0] |
| humidity = inputs[:, 1] |
| wind = inputs[:, 2] |
|
|
| |
| temp_flag = tf.sigmoid((temp - 293.0) * 1.2) |
| humid_flag = tf.sigmoid((humidity - 50.0) * 0.4) |
| wind_flag = 1 - tf.sigmoid((wind - 5.0) * 0.8) |
|
|
| suppression = temp_flag * humid_flag * wind_flag |
| penalty = 1.0 - 0.3 * suppression |
| return penalty[:, None] |
|
|
| CUSTOM_OBJECTS = { |
| "cold_temp_penalty": cold_temp_penalty, |
| "fire_risk_booster": fire_risk_booster, |
| "fire_suppression_mask": fire_suppression_mask |
| } |
|
|