File size: 2,013 Bytes
c7dae18
0380be0
 
2ff7669
 
 
896731f
2ff7669
1afba3c
 
 
 
 
2ff7669
896731f
0380be0
2ff7669
 
0380be0
 
034c215
1afba3c
 
 
c7dae18
1afba3c
c7dae18
034c215
0380be0
 
 
3225e13
0380be0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ff7669
6c6f69c
2ff7669
 
0380be0
6c6f69c
2ff7669
6c6f69c
c14b26c
11d018e
c480d50
b8c76b7
a20c10f
11d018e
80acb4b
2ff7669
9edaeee
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
import tensorflow as tf
from keras.api.models import Sequential
from keras.api.layers import InputLayer, Dense
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import numpy as np
from typing import List

from keras.models import Sequential, Model, load_model
from keras.layers import Dropout, Flatten, Dense
from keras import optimizers
from keras.models import model_from_json

class InputData(BaseModel):
    data: List[float]  # Lista de caracter铆sticas num茅ricas (flotantes)

app = FastAPI()

# Funci贸n para construir el modelo manualmente
def build_model():
    """
    with open('model.json','r') as f:
        json = f.read()
    model = model_from_json(json)

   
    """
    
    model = Sequential(
        [
            InputLayer(
                shape=(2,), name="dense_2_input"
            ),  # Ajusta el tama帽o de entrada seg煤n tu modelo
            Dense(16, activation="relu", name="dense_2"),
            Dense(1, activation="sigmoid", name="dense_3"),
        ]
    )
    model.load_weights(
        "model.h5"
    )  # Aseg煤rate de que los nombres de las capas coincidan para que los pesos se carguen correctamente
    model.compile(
        loss="mean_squared_error", optimizer="adam", metrics=["binary_accuracy"]
    )
    return model


model = build_model()  # Construir el modelo al iniciar la aplicaci贸n


# Ruta de predicci贸n
@app.post("/predict/")
async def predict(data: InputData):
    print(f"Data: {data}")
    global model
    try:
        # Convertir la lista de entrada a un array de NumPy para la predicci贸n
        input_data = np.array(data.data).reshape(1, -1)  # Asumiendo que la entrada debe ser de forma (1, num_features)
        #print(input_data)
        prediction = model.predict(input_data).round()
        #return {"prediction": prediction.tolist()}
        #prediction = 9
        #print(prediction)
        return {"prediction": prediction}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))