modified: .gitignore
new file: README.md
This commit is contained in:
193
README.md
Normal file
193
README.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 建筑结构响应预测项目
|
||||
|
||||
## 项目概述
|
||||
|
||||
本项目使用时间卷积网络(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
|
||||
|
||||
## 安装依赖
|
||||
|
||||
1. 创建虚拟环境:
|
||||
```bash
|
||||
python -m venv .venv310
|
||||
# Windows
|
||||
.venv310\Scripts\activate
|
||||
# Linux/Mac
|
||||
source .venv310/bin/activate
|
||||
```
|
||||
|
||||
2. 安装依赖:
|
||||
```bash
|
||||
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
|
||||
pip install numpy pandas scikit-learn matplotlib
|
||||
```
|
||||
|
||||
## 数据准备
|
||||
|
||||
### 下载数据
|
||||
|
||||
运行数据下载脚本从配置文件下载数据:
|
||||
|
||||
```bash
|
||||
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)
|
||||
|
||||
## 训练模型
|
||||
|
||||
### 基本训练
|
||||
|
||||
运行训练脚本:
|
||||
|
||||
```bash
|
||||
cd src
|
||||
python train.py
|
||||
```
|
||||
|
||||
训练过程会:
|
||||
1. 加载Non_TMD条件下的训练和验证数据
|
||||
2. 初始化TCN模型
|
||||
3. 使用AdamW优化器和学习率调度器训练
|
||||
4. 保存最佳模型到 `best_model.pth`
|
||||
|
||||
### 高级训练选项
|
||||
|
||||
修改 `src/config.py` 中的参数来自定义训练:
|
||||
- 调整学习率、批大小等超参数
|
||||
- 启用/禁用早停(`ENABLE_EARLY_STOP`)
|
||||
- 修改模型架构参数
|
||||
|
||||
## 模型评估
|
||||
|
||||
运行评估脚本:
|
||||
|
||||
```bash
|
||||
cd src
|
||||
python evaluate.py
|
||||
```
|
||||
|
||||
评估过程会:
|
||||
1. 加载测试数据
|
||||
2. 加载训练好的模型权重
|
||||
3. 对测试数据进行预测
|
||||
4. 生成可视化结果保存为 `test_results.png`
|
||||
|
||||
## 模型架构
|
||||
|
||||
### BuildingTCN
|
||||
|
||||
- **输入**: (batch_size, seq_len, 1) - 底部传感器X轴数据
|
||||
- **输出**: (batch_size, seq_len, 5) - 5个传感器的Z轴预测
|
||||
- **架构**: 多层TCN + 线性输出层
|
||||
|
||||
### TemporalConvNet
|
||||
|
||||
- 使用膨胀卷积(dilation)实现长距离依赖
|
||||
- 残差连接保证梯度传播
|
||||
- 权重归一化提高训练稳定性
|
||||
|
||||
## 使用说明
|
||||
|
||||
### 自定义数据集
|
||||
|
||||
1. 将新数据放入 `downloads/Non_TMD/` 或 `downloads/TMD/` 相应子目录
|
||||
2. 确保数据格式符合要求
|
||||
3. 修改 `src/config.py` 中的传感器配置(如需要)
|
||||
4. 重新运行训练脚本
|
||||
|
||||
### 预测新数据
|
||||
|
||||
1. 准备输入数据(CSV格式)
|
||||
2. 修改 `src/dataset.py` 中的数据加载逻辑
|
||||
3. 使用加载的模型进行推理
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 确保数据目录结构正确
|
||||
- GPU内存不足时可适当减小 `BATCH_SIZE`
|
||||
- 模型收敛可能需要调整学习率
|
||||
- 测试数据可视化仅显示第一个batch的第一条序列
|
||||
|
||||
## 贡献
|
||||
|
||||
欢迎提交Issue和Pull Request来改进项目。
|
||||
|
||||
## 许可证
|
||||
|
||||
本项目仅供学习和研究使用。
|
||||
Reference in New Issue
Block a user