-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathengine.py
More file actions
56 lines (44 loc) · 1.83 KB
/
engine.py
File metadata and controls
56 lines (44 loc) · 1.83 KB
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
import os
import subprocess
from src.pipeline.get_data import GetData
from src.pipeline.train import BuildModel
from src.pipeline.constants import *
from src.pipeline.utils import save_model
from src.pipeline.predict import Predict
from src.logger import logging
logging.info(f"{'-'*10}Script Started{'-'*10}\n")
val = int(input("Train - 0\nPredict - 1\nDeploy - 2\nEnter your value: "))
if val == 0:
# Get training and validation data
train_ds, class_names = GetData().data()
val_ds, _ = GetData(subset='validation').data()
num_classes = len(class_names)
build_model = BuildModel(num_classes=num_classes)
model = build_model.build_cnn_model()
history = build_model.fit(model,
train_ds, val_ds,
epochs=EPOCHS)
model_path = save_model(model)
print(f"Model saved in: [{model_path}]")
elif val == 1:
print("Predicting on All Test Data")
result = Predict().batch_predict()
print("Predicting on random test-image")
output = Predict().predict_random_test_images()
else:
# For prod deployment
'''process = subprocess.Popen(['sh', './src/pipeline/wsgi.sh'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True
)'''
# For dev deployment
process = subprocess.Popen(['python', 'src/pipeline/deploy.py'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True
)
for stdout_line in process.stdout:
print(stdout_line)
stdout, stderr = process.communicate()
print(stdout, stderr)