484643409d645ce41c0e27dea75ab667e66b331b
modified: checkpoints/forward/best_tcn_model.pt modified: checkpoints/forward/training_history.csv new file: checkpoints_mlp/task1_feature_mlp/best_feature_mlp.pt new file: checkpoints_mlp/task1_feature_mlp/training_history.csv new file: checkpoints_rms/forward_rms/best_rms_model.pt new file: checkpoints_rms/forward_rms/training_history.csv modified: evaluation_outputs/forward/evaluation_forward_test_b0_s0.png new file: evaluation_outputs/forward/evaluation_forward_val_b0_s0.png new file: evaluation_outputs/forward/evaluation_forward_val_b3_s0.png new file: evaluation_outputs/forward_rms/evaluation_test_all_samples.csv new file: evaluation_outputs/forward_rms/evaluation_test_s0.png new file: evaluation_outputs/forward_rms/evaluation_train_all_samples.csv new file: evaluation_outputs/forward_rms/evaluation_val_all_samples.csv new file: evaluation_outputs/forward_rms/evaluation_val_s0.png new file: evaluation_outputs/forward_rms/evaluation_val_s0_waveform.png new file: evaluation_outputs/task1_feature_mlp/evaluation_train_all_samples.csv new file: evaluation_outputs/task1_feature_mlp/evaluation_train_curve.png new file: evaluation_outputs/task1_feature_mlp/evaluation_val_all_samples.csv new file: evaluation_outputs/task1_feature_mlp/evaluation_val_curve.png new file: evaluation_outputs/task1_feature_mlp/evaluation_val_s0.png new file: evaluation_outputs/task1_feature_mlp/harmonic_5mm_0.75Hz_prediction.png new file: evaluation_outputs/task1_feature_mlp/harmonic_5mm_1.55Hz_prediction.png new file: scripts/__pycache__/config.cpython-310.pyc new file: scripts/__pycache__/dataset.cpython-310.pyc new file: scripts/__pycache__/model.cpython-310.pyc new file: scripts/config.py new file: scripts/dataset.py new file: scripts/evaluate.py new file: scripts/model.py new file: scripts/predict_single.py new file: scripts/train.py modified: src/__pycache__/config.cpython-310.pyc modified: src/__pycache__/dataset.cpython-310.pyc modified: src/__pycache__/model.cpython-310.pyc modified: src/config.py modified: src/dataset.py modified: src/model.py new file: src_new/__pycache__/config.cpython-310.pyc new file: src_new/__pycache__/dataset.cpython-310.pyc new file: src_new/__pycache__/evaluate.cpython-310.pyc new file: src_new/__pycache__/model.cpython-310.pyc new file: src_new/__pycache__/train.cpython-310.pyc new file: src_new/config.py new file: src_new/dataset.py new file: src_new/evaluate.py new file: src_new/model.py new file: src_new/train.py
建筑结构响应预测项目
项目概述
本项目使用时间卷积网络(Temporal Convolutional Network, TCN)模型来预测建筑结构在地震波和简谐波激励下的响应。模型基于底部传感器的振动数据预测多个传感器的响应,实现结构健康监测和振动控制。
主要特性
- 多输出预测:基于单个输入传感器预测5个输出传感器的响应
- 时间序列建模:使用TCN处理序列数据,支持长距离依赖
- 数据增强:支持有/无TMD(调谐质量阻尼器)条件下的数据训练
- 自动化评估:提供完整的训练和测试流程
项目结构
Building-main/
├── src/
│ ├── __init__.py
│ ├── config.py # 配置文件,包含模型和训练参数
│ ├── dataset.py # 数据集处理和数据加载器
│ ├── model.py # TCN模型定义
│ ├── train.py # 训练脚本
│ └── evaluate.py # 评估脚本
├── downloads/ # 数据目录
│ ├── Non_TMD/ # 无TMD数据
│ │ ├── train/ # 训练数据
│ │ ├── val/ # 验证数据
│ │ └── test/ # 测试数据
│ └── TMD/ # 有TMD数据
├── 数据链接.txt # 数据下载链接配置文件
├── download_from_data_links.py # 数据下载脚本
├── best_model.pth # 训练好的模型权重
└── README.md # 项目说明文档
环境要求
- Python 3.8+
- PyTorch 1.9+
- CUDA(可选,用于GPU加速)
- 其他依赖:numpy, pandas, scikit-learn, matplotlib
安装依赖
- 创建虚拟环境:
python -m venv .venv310
# Windows
.venv310\Scripts\activate
# Linux/Mac
source .venv310/bin/activate
- 安装依赖:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install numpy pandas scikit-learn matplotlib
数据准备
下载数据
运行数据下载脚本从配置文件下载数据:
python download_from_data_links.py
脚本会从 数据链接.txt 中读取下载链接,并将数据保存到 downloads/ 目录。
数据格式
数据为CSV格式的长表结构,包含以下字段:
code: 传感器编码type: 数据类型time: 时间戳value1,value2,value3: 三个轴的振动值
数据集说明
- Non_TMD: 无调谐质量阻尼器条件下的数据
- TMD: 安装调谐质量阻尼器条件下的数据
- 包含谐波激励(不同频率和振幅)和地震波激励数据
配置说明
主要配置参数在 src/config.py 中:
-
数据配置:
SEQ_LEN: 序列长度(512)STEP_SIZE: 滑动窗口步长(20)BATCH_SIZE: 批大小(256)
-
传感器配置:
INPUT_SENSOR: 输入传感器编码('WSMS00012')OUTPUT_SENSORS: 输出传感器编码列表INPUT_AXIS: 输入轴('value1' - X轴)OUTPUT_AXIS: 输出轴('value3' - Z轴)
-
模型配置:
CHANNELS: TCN各层通道数 [64, 64, 128, 128, 256, 256]KERNEL_SIZE: 卷积核大小(5)DROPOUT: Dropout率(0.2)
-
训练配置:
LEARNING_RATE: 学习率(1e-4)EPOCHS: 训练轮数(50)WEIGHT_DECAY: 权重衰减(1e-3)
训练模型
基本训练
运行训练脚本:
cd src
python train.py
训练过程会:
- 加载Non_TMD条件下的训练和验证数据
- 初始化TCN模型
- 使用AdamW优化器和学习率调度器训练
- 保存最佳模型到
best_model.pth
高级训练选项
修改 src/config.py 中的参数来自定义训练:
- 调整学习率、批大小等超参数
- 启用/禁用早停(
ENABLE_EARLY_STOP) - 修改模型架构参数
模型评估
运行评估脚本:
cd src
python evaluate.py
评估过程会:
- 加载测试数据
- 加载训练好的模型权重
- 对测试数据进行预测
- 生成可视化结果保存为
test_results.png
模型架构
BuildingTCN
- 输入: (batch_size, seq_len, 1) - 底部传感器X轴数据
- 输出: (batch_size, seq_len, 5) - 5个传感器的Z轴预测
- 架构: 多层TCN + 线性输出层
TemporalConvNet
- 使用膨胀卷积(dilation)实现长距离依赖
- 残差连接保证梯度传播
- 权重归一化提高训练稳定性
使用说明
自定义数据集
- 将新数据放入
downloads/Non_TMD/或downloads/TMD/相应子目录 - 确保数据格式符合要求
- 修改
src/config.py中的传感器配置(如需要) - 重新运行训练脚本
预测新数据
- 准备输入数据(CSV格式)
- 修改
src/dataset.py中的数据加载逻辑 - 使用加载的模型进行推理
注意事项
- 确保数据目录结构正确
- GPU内存不足时可适当减小
BATCH_SIZE - 模型收敛可能需要调整学习率
- 测试数据可视化仅显示第一个batch的第一条序列
贡献
欢迎提交Issue和Pull Request来改进项目。
许可证
本项目仅供学习和研究使用。
Description
Languages
Python
100%