File size: 1,338 Bytes
990a10e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Descarga el modelo desde Hugging Face Hub y predice EN ESTA PC.



Baja model_ts.pt + config.json. El modelo vive en el Hub; la inferencia la hace este código.



No hace falta la clase RegresionLineal: el código viene en el archivo.



Uso:

    python predict_hub.py tu-usuario/casas-pytorch-exportar-torchscript

"""

import json
import sys

import numpy as np
import torch
from huggingface_hub import hf_hub_download

REPO_ID = sys.argv[1] if len(sys.argv) > 1 else "TU-USUARIO/casas-pytorch-exportar-torchscript"

# La primera vez descarga el archivo; después usa la copia en caché
casas_nuevas = np.array([[50, 0, 0], [80, 1, 0], [110, 1, 1]], dtype="float32")
with open(hf_hub_download(repo_id=REPO_ID, filename="config.json"), encoding="utf-8") as f:
    config = json.load(f)
media = np.array(config["normalizacion"]["media"], dtype="float32")
desvio = np.array(config["normalizacion"]["desvio"], dtype="float32")
x = torch.tensor((casas_nuevas - media) / desvio)

modelo = torch.jit.load(hf_hub_download(repo_id=REPO_ID, filename="model_ts.pt"))
with torch.no_grad():
    precios = modelo(x).numpy()

ENTRADAS = ["m2", "balcon", "ascensor"]
for casa, precio in zip([[50, 0, 0], [80, 1, 0], [110, 1, 1]], np.ravel(precios)):
    print(f"{dict(zip(ENTRADAS, casa))} -> {precio:.1f} miles de US$")