Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import torch | |
| import numpy as np | |
| import pandas as pd | |
| import time | |
| import json | |
| import io | |
| import base64 | |
| import pickle | |
| import matplotlib.pyplot as plt | |
| from model import GRUModel, load_model, save_model_info | |
| from utils import (init_firebase, get_data_from_firebase, save_data_to_firebase, | |
| preprocess_data, create_sequences, load_scalers_and_encoders, | |
| prepare_input_data, get_file_download_link, | |
| save_scaler_to_bytes, save_encoders_to_bytes, | |
| create_default_scaler, create_default_encoders) | |
| # ตั้งค่าหน้าเว็บ | |
| st.set_page_config(page_title="GRU Model for PM0.1 Prediction", layout="wide") | |
| st.title("GRU Model for PM0.1 Prediction") | |
| # สร้าง session state สำหรับเก็บข้อมูลระหว่าง rerun | |
| if 'prediction_history' not in st.session_state: | |
| st.session_state.prediction_history = [] | |
| st.session_state.timestamp_history = [] | |
| st.session_state.initialized = False | |
| st.session_state.model_loaded = False | |
| st.session_state.firebase_connected = False | |
| # โหลดโมเดลและ hyperparameters | |
| def load_model_resources(): | |
| model_path = "model.pth" | |
| try: | |
| model, hyperparams = load_model(model_path) | |
| numeric_scaler, label_encoders, y_scaler = load_scalers_and_encoders(model_path) | |
| # บันทึกข้อมูลโมเดลเป็น JSON สำหรับการตรวจสอบ | |
| if model is not None and hyperparams is not None: | |
| save_model_info(model, hyperparams, "model_info.json") | |
| return model, hyperparams, numeric_scaler, label_encoders, y_scaler | |
| except Exception as e: | |
| st.error(f"เกิดข้อผิดพลาดในการโหลดโมเดล: {str(e)}") | |
| return None, None, None, None, None | |
| # ส่วนของ sidebar สำหรับการตั้งค่า | |
| with st.sidebar: | |
| st.header("การตั้งค่า") | |
| # การตั้งค่า Firebase | |
| st.subheader("Firebase Configuration") | |
| # ใช้ secrets หรือป้อนข้อมูลโดยตรง | |
| use_secrets = st.checkbox("ใช้ Secrets", value=True, | |
| help="เลือกว่าจะใช้ค่า Secrets หรือป้อนข้อมูลโดยตรง") | |
| if use_secrets: | |
| firebase_credentials = st.secrets.get("firebase_credentials", "{}") | |
| firebase_url = st.secrets.get("firebase_url", "https://your-project-id.firebaseio.com") | |
| else: | |
| firebase_credentials = st.text_area("Firebase Service Account JSON", | |
| value="", height=100, | |
| help="ใส่ข้อมูล JSON ของ Service Account สำหรับเชื่อมต่อกับ Firebase") | |
| firebase_url = st.text_input("Firebase Database URL", | |
| value="https://your-project-id.firebaseio.com", | |
| help="URL ของ Firebase Realtime Database") | |
| input_path = st.text_input("Firebase Input Path", | |
| value="input_data", | |
| help="พาธสำหรับดึงข้อมูลจาก Firebase") | |
| output_path = st.text_input("Firebase Output Path", | |
| value="prediction_results", | |
| help="พาธสำหรับบันทึกผลลัพธ์ลงใน Firebase") | |
| # การตั้งค่าการทำนาย | |
| st.subheader("Prediction Configuration") | |
| auto_predict = st.checkbox("Auto-predict", value=False, | |
| help="เปิดใช้การทำนายอัตโนมัติตามระยะเวลาที่กำหนด") | |
| if auto_predict: | |
| predict_interval = st.number_input("Prediction Interval (seconds)", | |
| min_value=10, max_value=3600, value=60, | |
| help="ความถี่ในการทำนายอัตโนมัติ (วินาที)") | |
| # โหลดโมเดลและ hyperparameters | |
| model, hyperparams, numeric_scaler, label_ |