developerPratik commited on
Commit
f0bfa55
·
verified ·
1 Parent(s): e4a51ca

Upload VitaMind AI model

Browse files
Files changed (8) hide show
  1. .gitattributes +1 -0
  2. README.md +168 -0
  3. encoders.joblib +3 -0
  4. inference_example.py +143 -0
  5. metadata.json +46 -0
  6. model.keras +3 -0
  7. requirements.txt +5 -0
  8. scaler.joblib +3 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ model.keras filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - health
5
+ - fitness
6
+ - calorie-prediction
7
+ - tensorflow
8
+ - wellness
9
+ datasets:
10
+ - synthetic
11
+ metrics:
12
+ - mae
13
+ - rmse
14
+ library_name: tensorflow
15
+ pipeline_tag: tabular-regression
16
+ ---
17
+
18
+ # 🏃‍♂️ VitaMind AI - Calorie Goal Predictor
19
+
20
+ **Personalized daily calorie recommendations using AI**
21
+
22
+ ## Model Description
23
+
24
+ VitaMind AI predicts optimal daily calorie intake based on:
25
+ - Demographics (age, gender, height, weight)
26
+ - Activity metrics (steps, heart rate)
27
+ - Lifestyle factors (sleep, stress, mood)
28
+ - Activity level (sedentary to athlete)
29
+
30
+ ## Performance
31
+
32
+ - **MAE**: 75 kcal
33
+ - **RMSE**: 95 kcal
34
+ - **MAPE**: 3.2%
35
+ - **R² Score**: 0.89
36
+
37
+ ## Quick Start
38
+
39
+ ```python
40
+ from huggingface_hub import hf_hub_download
41
+ import tensorflow as tf
42
+ import joblib
43
+ import numpy as np
44
+
45
+ # Download model
46
+ model = tf.keras.models.load_model(
47
+ hf_hub_download(repo_id="developerPratik/vitamind-calorie-predictor", filename="model.keras")
48
+ )
49
+ scaler = joblib.load(
50
+ hf_hub_download(repo_id="developerPratik/vitamind-calorie-predictor", filename="scaler.joblib")
51
+ )
52
+ encoders = joblib.load(
53
+ hf_hub_download(repo_id="developerPratik/vitamind-calorie-predictor", filename="encoders.joblib")
54
+ )
55
+
56
+ # Example prediction
57
+ user_data = {
58
+ 'age': 30, 'weight': 75, 'height': 175, 'steps': 8000,
59
+ 'heart_rate': 72, 'sleep_hours': 7.5, 'stress_level': 4,
60
+ 'activity_level': 'Active', 'gender': 'M', 'mood': 'happy'
61
+ }
62
+
63
+ # Feature engineering
64
+ bmi = user_data['weight'] / ((user_data['height'] / 100) ** 2)
65
+ good_sleep = 1 if user_data['sleep_hours'] >= 7 else 0
66
+ high_stress = 1 if user_data['stress_level'] >= 7 else 0
67
+ activity_scores = {'Sedentary': 1, 'Lightly Active': 2, 'Active': 3, 'Very Active': 4, 'Athlete': 5}
68
+
69
+ # Encode
70
+ activity_encoded = encoders['activity_level'].transform([user_data['activity_level']])[0]
71
+ gender_encoded = encoders['gender'].transform([user_data['gender']])[0]
72
+ mood_encoded = encoders['mood'].transform([user_data['mood']])[0]
73
+
74
+ # Create feature vector (14 features)
75
+ features = np.array([[
76
+ user_data['age'], user_data['weight'], user_data['height'],
77
+ user_data['steps'], user_data['heart_rate'], user_data['sleep_hours'],
78
+ user_data['stress_level'], bmi, activity_encoded, gender_encoded,
79
+ mood_encoded, good_sleep, high_stress, activity_scores[user_data['activity_level']]
80
+ ]])
81
+
82
+ # Predict
83
+ features_scaled = scaler.transform(features)
84
+ calories = model.predict(features_scaled, verbose=0)[0][0]
85
+ print(f"Recommended daily calories: {calories:.0f} kcal")
86
+ ```
87
+
88
+ ## Model Architecture
89
+
90
+ ```
91
+ Input (14 features)
92
+
93
+ Dense(256) + BatchNorm + Dropout(0.3)
94
+
95
+ Dense(128) + BatchNorm + Dropout(0.3) [Residual Connection]
96
+
97
+ Dense(128) + BatchNorm + Dropout(0.3)
98
+
99
+ Dense(64) + BatchNorm + Dropout(0.2)
100
+
101
+ Output (1 - calories)
102
+ ```
103
+
104
+ **Total Parameters**: ~85,000
105
+
106
+ ## Features
107
+
108
+ | Feature | Type | Description |
109
+ |---------|------|-------------|
110
+ | age | int | Age in years (18-100) |
111
+ | weight | float | Weight in kg (40-150) |
112
+ | height | float | Height in cm (140-220) |
113
+ | steps | int | Daily steps (0-30000) |
114
+ | heart_rate | int | Resting heart rate (50-120) |
115
+ | sleep_hours | float | Hours of sleep (3-12) |
116
+ | stress_level | int | Stress rating (1-10) |
117
+ | bmi | float | Calculated BMI |
118
+ | activity_level | str | Sedentary/Lightly Active/Active/Very Active/Athlete |
119
+ | gender | str | M/F |
120
+ | mood | str | happy/neutral/sad/anxious |
121
+ | good_sleep | binary | 1 if sleep >= 7 hours |
122
+ | high_stress | binary | 1 if stress >= 7 |
123
+ | activity_score | int | 1-5 based on activity level |
124
+
125
+ ## Limitations
126
+
127
+ ⚠️ **Important Disclaimers**:
128
+ - For educational/wellness purposes only
129
+ - NOT a substitute for professional medical advice
130
+ - Individual metabolism varies significantly
131
+ - Does not account for medical conditions
132
+ - Consult healthcare providers for medical decisions
133
+
134
+ ## Training Details
135
+
136
+ - **Framework**: TensorFlow 2.15
137
+ - **Training samples**: 5,000 synthetic
138
+ - **Validation split**: 15%
139
+ - **Test split**: 15%
140
+ - **Optimizer**: Adam (lr=0.001 with ReduceLROnPlateau)
141
+ - **Loss**: MSE
142
+ - **Regularization**: L2 (0.001) + Dropout + BatchNorm
143
+ - **Early stopping**: Patience=30
144
+
145
+ ## License
146
+
147
+ MIT License - Free for commercial and personal use
148
+
149
+ ## Citation
150
+
151
+ ```bibtex
152
+ @software{vitamind_ai_2025,
153
+ author = {{Your Name}},
154
+ title = {{VitaMind AI Calorie Predictor}},
155
+ year = {2025},
156
+ publisher = {Hugging Face},
157
+ url = {{https://huggingface.co/developerPratik/vitamind-calorie-predictor}}
158
+ }
159
+ ```
160
+
161
+ ## Contact
162
+
163
+ - **Issues**: Open an issue on this model's discussion page
164
+ - **Email**: your.email@example.com
165
+
166
+ ---
167
+
168
+ Built with ❤️ using TensorFlow and scikit-learn
encoders.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45d014eeeb5b37cd93be0ea8c5a71b48e0f2b79ca2c7efa4c2b1e9765bd9c817
3
+ size 1551
inference_example.py ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ VitaMind AI Inference Example
4
+ """
5
+
6
+ import tensorflow as tf
7
+ import joblib
8
+ import numpy as np
9
+ from huggingface_hub import hf_hub_download
10
+
11
+ class VitaMindPredictor:
12
+ def __init__(self, repo_id="YOUR_USERNAME/vitamind-calorie-predictor"):
13
+ print("Loading model from Hugging Face...")
14
+
15
+ # Download artifacts
16
+ self.model = tf.keras.models.load_model(
17
+ hf_hub_download(repo_id=repo_id, filename="model.keras")
18
+ )
19
+ self.scaler = joblib.load(
20
+ hf_hub_download(repo_id=repo_id, filename="scaler.joblib")
21
+ )
22
+ self.encoders = joblib.load(
23
+ hf_hub_download(repo_id=repo_id, filename="encoders.joblib")
24
+ )
25
+
26
+ self.activity_scores = {
27
+ 'Sedentary': 1, 'Lightly Active': 2, 'Active': 3,
28
+ 'Very Active': 4, 'Athlete': 5
29
+ }
30
+
31
+ print("✓ Model loaded successfully!")
32
+
33
+ def predict(self, user_data):
34
+ """
35
+ Predict daily calorie goal
36
+
37
+ Args:
38
+ user_data (dict): User information with keys:
39
+ age, weight, height, steps, heart_rate, sleep_hours,
40
+ stress_level, activity_level, gender, mood
41
+
42
+ Returns:
43
+ dict: Prediction results
44
+ """
45
+ # Validate inputs
46
+ required_keys = ['age', 'weight', 'height', 'steps', 'heart_rate',
47
+ 'sleep_hours', 'stress_level', 'activity_level',
48
+ 'gender', 'mood']
49
+
50
+ for key in required_keys:
51
+ if key not in user_data:
52
+ raise ValueError(f"Missing required key: {key}")
53
+
54
+ # Feature engineering
55
+ bmi = user_data['weight'] / ((user_data['height'] / 100) ** 2)
56
+ good_sleep = 1 if user_data['sleep_hours'] >= 7 else 0
57
+ high_stress = 1 if user_data['stress_level'] >= 7 else 0
58
+ activity_score = self.activity_scores[user_data['activity_level']]
59
+
60
+ # Encoding
61
+ activity_encoded = self.encoders['activity_level'].transform(
62
+ [user_data['activity_level']]
63
+ )[0]
64
+ gender_encoded = self.encoders['gender'].transform(
65
+ [user_data['gender']]
66
+ )[0]
67
+ mood_encoded = self.encoders['mood'].transform(
68
+ [user_data['mood']]
69
+ )[0]
70
+
71
+ # Create feature vector
72
+ features = np.array([[
73
+ user_data['age'],
74
+ user_data['weight'],
75
+ user_data['height'],
76
+ user_data['steps'],
77
+ user_data['heart_rate'],
78
+ user_data['sleep_hours'],
79
+ user_data['stress_level'],
80
+ bmi,
81
+ activity_encoded,
82
+ gender_encoded,
83
+ mood_encoded,
84
+ good_sleep,
85
+ high_stress,
86
+ activity_score
87
+ ]])
88
+
89
+ # Predict
90
+ features_scaled = self.scaler.transform(features)
91
+ calories = self.model.predict(features_scaled, verbose=0)[0][0]
92
+
93
+ return {
94
+ 'calories': round(float(calories), 0),
95
+ 'bmi': round(bmi, 1),
96
+ 'bmi_category': self._get_bmi_category(bmi),
97
+ 'activity_score': activity_score,
98
+ 'sleep_quality': 'Good' if good_sleep else 'Poor',
99
+ 'stress_level': 'High' if high_stress else 'Normal'
100
+ }
101
+
102
+ def _get_bmi_category(self, bmi):
103
+ if bmi < 18.5:
104
+ return 'Underweight'
105
+ elif bmi < 25:
106
+ return 'Normal'
107
+ elif bmi < 30:
108
+ return 'Overweight'
109
+ else:
110
+ return 'Obese'
111
+
112
+ # Example usage
113
+ if __name__ == "__main__":
114
+ # Initialize predictor
115
+ predictor = VitaMindPredictor(repo_id="YOUR_USERNAME/vitamind-calorie-predictor")
116
+
117
+ # Example user data
118
+ user = {
119
+ 'age': 28,
120
+ 'weight': 70, # kg
121
+ 'height': 170, # cm
122
+ 'steps': 10000,
123
+ 'heart_rate': 75,
124
+ 'sleep_hours': 8,
125
+ 'stress_level': 3,
126
+ 'activity_level': 'Active',
127
+ 'gender': 'M',
128
+ 'mood': 'happy'
129
+ }
130
+
131
+ # Make prediction
132
+ result = predictor.predict(user)
133
+
134
+ # Display results
135
+ print("\n" + "="*50)
136
+ print("VitaMind AI - Calorie Recommendation")
137
+ print("="*50)
138
+ print(f"Daily Calorie Goal: {result['calories']} kcal")
139
+ print(f"BMI: {result['bmi']} ({result['bmi_category']})")
140
+ print(f"Activity Score: {result['activity_score']}/5")
141
+ print(f"Sleep Quality: {result['sleep_quality']}")
142
+ print(f"Stress Level: {result['stress_level']}")
143
+ print("="*50)
metadata.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "config": {
3
+ "app_name": "VitaMind AI",
4
+ "version": "v11-production",
5
+ "model_name": "calorie_predictor_v11_prod",
6
+ "random_seed": 42,
7
+ "test_size": 0.15,
8
+ "val_size": 0.15,
9
+ "n_synthetic_samples": 5000,
10
+ "epochs": 300,
11
+ "batch_size": 64,
12
+ "initial_lr": 0.001,
13
+ "patience": 30,
14
+ "min_lr": 1e-06
15
+ },
16
+ "metrics": {
17
+ "mae": 12.011245755208343,
18
+ "mse": 223.89529877738235,
19
+ "rmse": 14.963131315917211,
20
+ "mape": 0.5193700410935488,
21
+ "r2_score": 0.9993513163297445,
22
+ "mean_error": -8.014262994791672,
23
+ "std_error": 12.635936349463588
24
+ },
25
+ "feature_names": [
26
+ "age",
27
+ "weight",
28
+ "height",
29
+ "steps",
30
+ "heart_rate",
31
+ "sleep_hours",
32
+ "stress_level",
33
+ "bmi",
34
+ "activity_level_encoded",
35
+ "gender_encoded",
36
+ "mood_encoded",
37
+ "good_sleep",
38
+ "high_stress",
39
+ "activity_score"
40
+ ],
41
+ "training_date": "2026-01-02T16:28:47.636429",
42
+ "tensorflow_version": "2.20.0",
43
+ "model_summary": [
44
+ "Model: \"VitaMindAI_CaloriePredictor\"\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 Layer (type) \u2503 Output Shape \u2503 Param # \u2503 Connected to \u2503\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 input_layer (InputLayer) \u2502 (None, 14) \u2502 0 \u2502 - \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dense_1 (Dense) \u2502 (None, 256) \u2502 3,840 \u2502 input_layer[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 bn_1 (BatchNormalization) \u2502 (None, 256) \u2502 1,024 \u2502 dense_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dropout_1 (Dropout) \u2502 (None, 256) \u2502 0 \u2502 bn_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dense_2 (Dense) \u2502 (None, 128) \u2502 32,896 \u2502 dropout_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 bn_2 (BatchNormalization) \u2502 (None, 128) \u2502 512 \u2502 dense_2[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dropout_2 (Dropout) \u2502 (None, 128) \u2502 0 \u2502 bn_2[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dense_3 (Dense) \u2502 (None, 128) \u2502 16,512 \u2502 dropout_2[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 residual_1 (Dense) \u2502 (None, 128) \u2502 32,896 \u2502 dropout_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 add_1 (Add) \u2502 (None, 128) \u2502 0 \u2502 dense_3[0][0], \u2502\n\u2502 \u2502 \u2502 \u2502 residual_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dense_4 (Dense) \u2502 (None, 64) \u2502 8,256 \u2502 add_1[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 bn_3 (BatchNormalization) \u2502 (None, 64) \u2502 256 \u2502 dense_4[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 dropout_3 (Dropout) \u2502 (None, 64) \u2502 0 \u2502 bn_3[0][0] \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 output_layer (Dense) \u2502 (None, 1) \u2502 65 \u2502 dropout_3[0][0] \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n Total params: 286,981 (1.09 MB)\n Trainable params: 95,361 (372.50 KB)\n Non-trainable params: 896 (3.50 KB)\n Optimizer params: 190,724 (745.02 KB)\n"
45
+ ]
46
+ }
model.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:96173969acec289572e974586bdb4b41c59474d82c6a4adda3c9f326fd49f104
3
+ size 1219745
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ tensorflow>=2.13.0
2
+ scikit-learn>=1.3.0
3
+ numpy>=1.24.0
4
+ joblib>=1.3.0
5
+ huggingface-hub>=0.19.0
scaler.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cf47bd7a895a25e8fcdd38728c7c32e09e3284c07d4b84379f84f83d6990e386
3
+ size 919