# Dimensionality_Reduction **Repository Path**: AiLing_Hrubst/Dimensionality_Reduction ## Basic Information - **Project Name**: Dimensionality_Reduction - **Description**: 对于二维与三维时空分布系统数据的模型简约方法 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-21 - **Last Updated**: 2025-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, AutoEncoder, Dimension-reduction ## README # 📦 Dimensionality Reduction ## ✨ 项目简介 此项目专注于时空分布系统数据的模型简约,旨在实现数据驱动建模中张量数据的降维/降阶处理,主要产出编码张量、低阶时间系数以及空间基函数。 --- ## 📌 算法实现 * **时空分解算法**:CP (Parafac)、Tucker、PCA * **降维算法**:DAE、Stack\_CAE、CAE、ELM\_AE --- ## 📂 文件夹结构说明 ### 📌 `Dimensionality_Reduction` 主目录 | 文件夹 | 描述 | | ----------------------------- | -------------------------------- | | **SAE** | 用于处理一维平流(对流)方程降维的堆叠自编码器程序 | | **TT-ICE-main** | 增量 Tensor Train 张量分析算法,原论文位于文件夹中 | | **dimensionality\_reduction** | 作者论文第四章、第五章时空分解、数据降维实验代码 | ### 📌 `dimensionality_reduction` 子目录 | 文件夹 | 描述 | | ----------------------- | ----------------------------- | | **data** | 从 COMSOL 或 MATLAB 导出的仿真数据 | | **logs** | 包含控制台测试输出及降维实验结果的日志记录 | | **AutoEncoder** | 一维与二维自编码器模型定义、主实验函数、贝叶斯超参数优化等 | | **multi\_ways** | 各种降维及时空分解算法函数定义文件 | | **test** | 测试与调试专用文件 | | **tools** | 工具函数及绘图脚本集合 | | **predicted\_results** | 存储预测后所得编码张量与时间系数 | | **upscaling\_inverter** | 升维(升阶)主函数与结果存储 | --- ## 🔧 环境搭建 1. 推荐使用 **Pycharm** 和 **Anaconda**。 2. 安装 **PyTorch**,确保 CUDA 和 PyTorch 版本兼容。 * 具体安装指令请参阅:[PyTorch官网](https://pytorch.org)。 * 若控制台直接安装默认下载 CPU 版本,请注意显卡环境。 3. 在 **Pycharm** 中,将项目根目录配置为资源根,确保项目无错误提示。 --- ## 🚀 快速上手指南 1. **数据导入**:将 COMSOL 导出的二维时空数据置于 `data` 文件夹内。 2. **数据转换**:在 `tools` 文件夹执行 `comsol_data_convert` 获取张量原始数据。 3. **数据可视化**:在 `tools/result_plot` 中运行绘图脚本,结果保存至 `fig` 文件夹。 4. **模型定义与训练**: * 降维任务:在 `AutoEncoder/model_2d` 定义模型,设置超参数范围。 * 执行贝叶斯优化 (`CAE2d_Bayesian`) 寻找最优超参数。 5. **模型运行**:在 `main` 模块给定超参数并执行训练。 6. **预测与结果拼接**:将训练结果送至预测项目,预测结果复制回 `predicted_results`,并用 `tools/patchwork_encoded` 拼接。 7. **升维与重构**:运行 `upscaling_inverter` 文件夹内对应程序重构数据并计算误差。 --- 🚩 更多详细步骤及问题处理,请参考各文件夹内具体文档和脚本注释。 --- :underage: 后续注意及优化 1. requirements文件内只是各个依赖的版本不能用pip install -r 指令直接装包。这是版本参考文件,比如CP中的parafac必须和我的tensorly版本一致,不能装最新。 2. 如果后续设计了3d卷积自编码器,升维需要在upscaling_inverter中修改我的程序或自己写,不能直接套用。 3. upscaling_inverter升维时要注意加载的是model.pt参数文件,文件内不包含模型架构信息,只有模型参数,要确保激活函数等夹层一致。 4. tools中comsol_data_convert程序只能用来将矩阵转为三阶张量,若涉及更高维时空分布系统数据需要重新调整。 5. patchwork_timefactor程序要根据张量阶数重新调整,此文件针对三阶张量。 6. 养成好习惯,在更新项目后要考虑版本回退问题,及时做好备份,云端比如gitee,本地端比如typora。写代码日志。及时保持每次实验的结果,有序保持,不要混淆。 7. 目前项目内所有的自编码器模型皆是全批次训练,既batch size=timesteps,这样做没有问题。但经过我的实验,若设置batch size为定值,则训练不收敛,不知为何。 8. 当降维与预测项目开发完成时,当合并2个项目为一个建模大项目。 9. 探索降维-预测二合一大模型。 --- :squirrel: 更多降维相关资料与代码分享 通过网盘分享的文件:降维资料 链接: https://pan.baidu.com/s/13NHxNvuOSmsKZtBVWSyK9w?pwd=vnqp 提取码: vnqp 通过网盘分享的文件:DRProject.zip 链接: https://pan.baidu.com/s/1EHzAp9tnm1l8yCNktFwJuA?pwd=8ux7 提取码: 8ux7 通过网盘分享的文件:13种即插即用模块.zip 链接: https://pan.baidu.com/s/1jaTESQp2P1U6ILS-3HebLA?pwd=x8p2 提取码: x8p2