Spaces:
Running
Running
File size: 1,969 Bytes
60de325 a1e2d43 60de325 a1e2d43 9068905 a1e2d43 4571224 6ac2735 6c8b39b 9627e09 9068905 9627e09 9068905 60de325 a1e2d43 1106ef4 6ac2735 1106ef4 6ac2735 1106ef4 a1e2d43 60de325 6c8b39b 1106ef4 9068905 a1e2d43 1106ef4 a1e2d43 60de325 6ac2735 60de325 a1e2d43 1106ef4 6c8b39b 60de325 |
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 |
import gradio as gr
from transformers import TimeSeriesTransformerForPrediction, TimeSeriesTransformerConfig
import torch
import pandas as pd
import numpy as np
# Carregar configuração
config = TimeSeriesTransformerConfig.from_pretrained("google/timesfm-2.0-500m-pytorch")
config.prediction_length = 3
config.context_length = 12
config.lags_sequence = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] # Ajuste os lags para serem menores ou iguais ao context_length
# Carregar modelo com a configuração ajustada
model = TimeSeriesTransformerForPrediction.from_pretrained(
"google/timesfm-2.0-500m-pytorch",
config=config,
torch_dtype="auto"
)
def prever_vendas(historico):
# Converter entrada em tensor
historico = [float(x) for x in historico.split(",") if x.strip()]
if len(historico) != config.context_length:
raise ValueError(f"Histórico deve ter {config.context_length} valores.")
# Formatar dados
inputs = torch.tensor(historico).unsqueeze(0)
# Adicionar parâmetros necessários
past_time_features = torch.zeros(1, config.context_length, 1) # Características temporais dummy
past_observed_mask = torch.ones(1, config.context_length) # Dados observados
# Gerar previsão
with torch.no_grad():
outputs = model(
inputs,
past_time_features=past_time_features,
past_observed_mask=past_observed_mask
)
forecast = outputs.mean.squeeze().tolist()
return np.round(forecast, 2)
# Interface Gradio
iface = gr.Interface(
fn=prever_vendas,
inputs=gr.Textbox(label=f"Histórico de Vendas ({config.context_length} meses, separados por vírgulas)"),
outputs=gr.Textbox(label=f"Previsão para os Próximos {config.prediction_length} Meses"),
examples=[
["140,155,160,145,150,165,170,160,175,160,155,170"], # 12 meses
],
cache_examples=False # Desativar cache para evitar erros
)
iface.launch() |