|
|
před 4 měsíci | |
|---|---|---|
| .. | ||
| 20min | před 4 měsíci | |
| 90day | před 5 měsíci | |
| shared | před 5 měsíci | |
| test_files | před 5 měsíci | |
| README.md | před 5 měsíci | |
| api_main.py | před 5 měsíci | |
| config.yaml | před 5 měsíci | |
| requirements.txt | před 5 měsíci | |
| start.sh | před 5 měsíci | |
| status.sh | před 5 měsíci | |
| stop.sh | před 5 měsíci | |
| test_import.py | před 5 měsíci | |
基于 GAT-LSTM 神经网络的跨膜压力(TMP)预测模型,提供 RESTful API 接口。
gat-lstm_model/
├── 20min/ # 20分钟短期预测模块
│ ├── __init__.py
│ ├── predict.py # 预测器实现
│ ├── 20min_model.pth # 训练好的模型权重
│ └── 20min_scaler.pkl # 数据归一化器
│
├── 90day/ # 90天长期预测模块
│ ├── __init__.py
│ ├── predict.py # 预测器实现
│ ├── 90day_model.pth # 训练好的模型权重
│ └── 90day_scaler.pkl # 数据归一化器
│
├── shared/ # 共享模块
│ ├── __init__.py
│ ├── gat_lstm.py # GAT-LSTM模型结构
│ ├── args.py # 命令行参数解析
│ ├── data_preprocessor.py # 数据预处理
│ ├── data_trainer.py # 模型训练工具
│ └── edge_index.pt # 图结构边索引
│
├── test_files/ # 测试数据文件
│ └── pp.json
│
├── logs/ # 日志目录
│ ├── api.log # API服务日志
│ └── 20min_predict.log # 预测日志
│
├── received_data/ # 接口接收数据存档
│ └── request_*.json # 请求数据文件
│
├── api_main.py # FastAPI主程序
├── config.yaml # 配置文件
├── start.sh # 启动脚本
├── stop.sh # 停止脚本
├── status.sh # 状态查询脚本
├── cleanup_old_files.sh # 旧文件清理脚本
├── test_import.py # 导入测试脚本
├── requirements.txt # Python依赖
└── README.md # 本文档
pip install -r requirements.txt
# 生产模式
bash start.sh
# 开发模式(详细日志)
bash start.sh dev
bash status.sh
bash stop.sh
POST /api/v1/process_model/double_membrance
请求示例:
{
"data": [
{
"datetime": "2025-10-29 10:00:00",
"C.M.FT_ZGJJY1@out": 150.5,
...
}
]
}
响应示例:
{
"success": true,
"predict_result": [
{
"datetime": "2025-10-29 10:04:00",
"C.M.UF1_DB@press_PV_Predicted": 25.3,
...
}
]
}
GET /api/v1/process_model/test_double_membrance_from_file
从本地JSON文件加载测试数据进行预测。
服务启动后访问:
编辑 config.yaml 文件调整参数:
model:
seq_len: 10 # 输入序列长度
output_size: 5 # 预测步长
labels_num: 16 # 预测目标数量
feature_num: 79 # 输入特征维度
batch_size: 512 # 批处理大小
logging:
level: 'INFO' # 日志级别
log_file: 'logs/20min_predict.log'
device:
use_cuda: true # 是否使用GPU
cuda_device: 0 # GPU设备编号
import sys
import os
import importlib.util
import pandas as pd
# 加载20分钟预测模块
model_dir = '/path/to/gat-lstm_model'
spec = importlib.util.spec_from_file_location(
"predict_20min",
os.path.join(model_dir, "20min", "predict.py")
)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
# 使用预测器
predictor = module.Predictor()
df = pd.read_csv('input_data.csv')
predictions = predictor.predict(df)
result_df = predictor.save_predictions(predictions, start_date)
import requests
url = "http://localhost:7980/api/v1/process_model/double_membrance"
response = requests.post(url, json={"data": [...]})
result = response.json()
# 测试导入
python test_import.py
# 测试API
curl http://localhost:7980/api/v1/process_model/test_double_membrance_from_file
# 实时查看日志
tail -f logs/api.log
# 查看最近100行
tail -n 100 logs/api.log
# 搜索错误
grep ERROR logs/api.log
# 设置日志级别
export LOG_LEVEL=INFO
# 开启详细日志
export DETAILED_LOGS=true
# 检查端口占用
lsof -i:7980
# 查看日志
tail -f logs/api.log
切换到CPU模式,编辑 config.yaml:
device:
use_cuda: false