Alexa17 commited on
Commit
23c0a46
verified
1 Parent(s): 157f107

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +16 -0
  2. app.py +49 -0
  3. requirements.txt +6 -0
Dockerfile ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Usa una imagen base de Python
2
+ FROM python:3.9
3
+ # Establece el directorio de trabajo
4
+ WORKDIR /code
5
+
6
+ # Copia los archivos necesarios al contenedor
7
+ COPY ./requirements.txt /code/requirements.txt
8
+ RUN pip install --no-cache-dir -r /code/requirements.txt
9
+ RUN pip install fastapi uvicorn
10
+
11
+ COPY . .
12
+
13
+ RUN chmod -R 777 /code
14
+
15
+ # Comando para ejecutar la aplicaci贸n
16
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from keras.api.models import Sequential
2
+ from keras.api.layers import InputLayer, Dense
3
+ from fastapi import FastAPI, HTTPException
4
+ from pydantic import BaseModel
5
+ import numpy as np
6
+ from typing import List
7
+
8
+ class InputData(BaseModel):
9
+ data: List[float] # Lista de caracter铆sticas num茅ricas (flotantes)
10
+
11
+ app = FastAPI()
12
+
13
+ # Funci贸n para construir el modelo manualmente
14
+ def build_model():
15
+ model = Sequential(
16
+ [
17
+ InputLayer(
18
+ input_shape=(2,), name="dense_2_input"
19
+ ), # Ajusta el tama帽o de entrada seg煤n tu modelo
20
+ Dense(16, activation="relu", name="dense_2"),
21
+ Dense(1, activation="sigmoid", name="dense_3"),
22
+ ]
23
+ )
24
+ model.load_weights(
25
+ "model.h5"
26
+ ) # Aseg煤rate de que los nombres de las capas coincidan para que los pesos se carguen correctamente
27
+ model.compile(
28
+ loss="mean_squared_error", optimizer="adam", metrics=["binary_accuracy"]
29
+ )
30
+ return model
31
+
32
+
33
+ model = build_model() # Construir el modelo al iniciar la aplicaci贸n
34
+
35
+
36
+ # Ruta de predicci贸n
37
+ @app.post("/predict/")
38
+ async def predict(data: InputData):
39
+ print(f"Data: {data}")
40
+ global model
41
+ try:
42
+ # Convertir la lista de entrada a un array de NumPy para la predicci贸n
43
+ input_data = np.array(data.data).reshape(
44
+ 1, -1
45
+ ) # Asumiendo que la entrada debe ser de forma (1, num_features)
46
+ prediction = model.predict(input_data).round()
47
+ return {"prediction": prediction.tolist()}
48
+ except Exception as e:
49
+ raise HTTPException(status_code=500, detail=str(e))
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ tensorflow
2
+ keras
3
+ fastapi
4
+ numpy
5
+ pydantic
6
+ uvicorn