forked from tankala/ai-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgotCharactersDeathPredictionsAPI.py
More file actions
59 lines (54 loc) · 2.28 KB
/
gotCharactersDeathPredictionsAPI.py
File metadata and controls
59 lines (54 loc) · 2.28 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
57
58
59
import flask
import numpy as np
import tensorflow as tf
from keras.models import load_model
# initialize our Flask application and the Keras model
app = flask.Flask(__name__)
def init():
global model,graph
# load the pre-trained Keras model
model = load_model('models/gotCharactersDeathPredictions.h5')
graph = tf.get_default_graph()
# API for prediction
@app.route("/predict", methods=["GET"])
def predict():
nameOfTheCharacter = flask.request.args.get('name')
parameters = getParameters()
inputFeature = np.asarray(parameters).reshape(1, 12)
with graph.as_default():
raw_prediction = model.predict(inputFeature)[0][0]
if raw_prediction > 0.5:
prediction = 'Alive'
else:
prediction = 'Dead'
return sendResponse({nameOfTheCharacter: prediction})
# Getting Parameters
def getParameters():
parameters = []
parameters.append(flask.request.args.get('male'))
parameters.append(flask.request.args.get('book1'))
parameters.append(flask.request.args.get('book2'))
parameters.append(flask.request.args.get('book3'))
parameters.append(flask.request.args.get('book4'))
parameters.append(flask.request.args.get('book5'))
parameters.append(flask.request.args.get('isMarried'))
parameters.append(flask.request.args.get('isNoble'))
parameters.append(flask.request.args.get('numDeadRelations'))
parameters.append(flask.request.args.get('boolDeadRelations'))
parameters.append(flask.request.args.get('isPopular'))
parameters.append(flask.request.args.get('popularity'))
return parameters
# Cross origin support
def sendResponse(responseObj):
response = flask.jsonify(responseObj)
response.headers.add('Access-Control-Allow-Origin', '*')
response.headers.add('Access-Control-Allow-Methods', 'GET')
response.headers.add('Access-Control-Allow-Headers', 'accept,content-type,Origin,X-Requested-With,Content-Type,access_token,Accept,Authorization,source')
response.headers.add('Access-Control-Allow-Credentials', True)
return response
# if this is the main thread of execution first load the model and then start the server
if __name__ == "__main__":
print(("* Loading Keras model and Flask starting server..."
"please wait until server has fully started"))
init()
app.run(threaded=True)